`
zzq19860626
  • 浏览: 261223 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
B20df9e2-fb3d-3644-9f72-c1619842f682
设计模式学习笔记
浏览量:178108
87eaf24f-812a-3463-8e65-e3197d2ad8c2
java虚拟机
浏览量:26217
社区版块
存档分类
最新评论
文章列表
设计模式的创建模式中前面说了工厂模式,这里我们继续来讨论设计模式中另一个创建模式—单例模式。单例模式(Singleton)是指确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例。这个类我们也称它为单例类。单例模式的使用在现实世界里很多,比如我们常见的打印机打印的作业队列,一个没打印完,那么只有在队列等待;windows回收站,windows视窗里回收站有且只有一个实例。单例模式的目的就是有且只提供一个实例,所以它有一下几个特点:1、单例类只能有一个实例;2、单例类必须自己创建自己惟一的实例;3、单例类必须给所有其他对象提供这一实例。单例模式的一般结构如下: 上图可以看出 ...
    前面我们介绍了简单工厂,工厂方法模式,这节来看看抽象工厂模式,抽象工厂模式(Abstract Factory)是工厂方法里面最为抽象和最具一般性的形态,是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。抽象工厂模式和工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品族,从而使得产品具有二维性质。抽象工厂模式的一般示意类图如下: 下面我们先看抽象工厂的角色都有哪些:抽象工厂(Creator)角色:是抽象工厂模式的核心,与应用程序无关。任 ...
    工厂方法模式(Factory Method)又称虚拟构造子模式,可以说是简单工厂的抽象,也可以理解为简单工厂是退化了的工厂方法模式,其表现在简单工厂丧失了工厂方法的多态性。我们前一节中提到当产品结构变的复杂的时候,简 ...
 从这节开始学习设计模式,首先学习创建模式,其中工厂模式是创建模式里面最常见也常用的一种,工厂模式又分简单工厂模式(Simple Factory),工厂方法模式(Factory Method)和抽象工厂模式(Abstractor Factory),这里先学习最简单的也就是简单工厂模式。 简单工厂模式(Simple Factory)也称静态工厂方法模式,是工厂方法模式的特殊实现。简单工厂模式的一般性结构如下图:          简单工厂模式就是由一个工厂类根据传入的参量决定创建出哪一种产品类型的实例,下面我们拿实例来介绍简单工厂模式。如下图,抽象类型车包括子类火车,汽车,拖拉机。
package sha1; public class SHA1 { private final int[] abcde = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 }; // 摘要数据存储数组 private int[] digestInt = new int[5]; // 计算过程中的临时数据存储数组 private int[] tmpData = new int[80]; // 计算sh ...
  最近做ftp上传遇到问题,最终解决,现在分享给大家。 这里有四点: 1、将字符串转换成输入流 String s = "this is my test string 中国"; //将字符串转换成输入流 ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());  2、 ...
写个bat命令,内容如下: @echo off set dd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% mysqldump -h localhost -utest -p123456 -t test >d:/test_%dd%.sql   然后用windows 计划任务进行设置备份时间执行bat文件,就可以了。
1、cmd 进入命令行模式2、建立服务端密钥库,并制作证书   keytool.exe -genkeypair -v -alias sslsocket -keyalg RSA -keystore f:\project\sslsocket.keystore执行命令后如下操作:口令为alaric ,输入密钥库口令:再次输入新口令:您的名字与姓氏是什么?  [Unknown]:  zhang您的组织单位名称是什么?  [Unknown]:  caituo您的组织名称是什么?  [Unknown]:  caituo您所在的城市或区域名称是什么?  [Unknown]:  hz您所在的省/市/自治区名 ...
最近需要解析json数据,以前用json-lib觉得还是可以的,就是有时候不是很方便,然后使用了以下jackson json 结果发现真的很方便。 我需要将list对象转化成json对象,也需要将json 数组转化成List对象。 jackson json 官方地址:http://jackson.codehaus.org/ jackson json 有三种方式转换json数据的操作, 流模式,树模式,数据绑定模式。分别用于不同的环境下,对于我的需求数据绑定模式很简单就可以实现。 user对象代码: package jackson; import java.io.Serial ...
软件设计的核心是提高软件的可复用性和可维护性。通常一个软件之所以可复用性和可扩展性差的原因在于设计过于僵硬,过于脆弱,复用率低,粘度过高等原因导致的,这时候需要想办法提高可扩展性,灵活性和可插入性,从而提高软件的可复用性和可维护性。一般可维护性和可复用性不能同时能达到目的,只有遵循一定的设计原则,设计出来的系统才能同时满足可复用性和可维护性。面向对象设计原则主要有如下几条: 1、“开闭”原则(Open-Closed Principle)简称OCP,讲的是一个软件实体应该对扩展开放对修改关闭。 2、里氏代换原则(Liskov Substitution Principle)简称LSP,讲的是 ...
上一节里提到设计模式分为创建模式,结构模式和行为模式,这节我们来学习它们的定义以及它们包含哪些具体的设计模式。一、创建模式创建模式是对类的实例化过程的抽象化。在一些系统里,可能需要动态的决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎么构造和封装这些动态的决定。创建模式分为类的创建模式和对象的创建模式两种。1、类的创建模式 类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且影藏了这些类的实例是如何被创建和放在一起的。2、对象的创建模式 对象的创建模式描述的是把对象的创建过程动态地委派给另外一个对象,从而动态地决定客户端讲得 ...
今天开始重温设计模式,我想把自己学习的过程分享给大家,同时希望大家多多留言来讨论,相互学习相互进步。设计模式学习过程中需要借助UML来建模,把设计模式图形化,从而让我们更好的理解设计模式内容。什么是UML,UML是统一建模语言(Unified Modeling Language)的缩写,是当今软件设计的标准图标式设计语言。UML包括1、用例图(Use case diagrams),2、类图(Class diagrams),3、序列图(Sequence diagrams),4、协作图(Collaboration diagrams),5、状态图(Statechart diagrams),6、活动 ...
vi编辑器vi 文件名 打开vi编辑器 如果没有则新建:q 退出vi不保存:wq 保存并退出:q! 不保存退出 tail -f 文件名 从文件尾开始查看 文件操作 mkdir 目录名 创建新的目录rz 文件名 上传文件到当前目录sz 文件名 下载文件rm [-rf] 文件名 删除文件 -rf 可选项强行删除unzip 文件名 解压zip文件jar -xvf 包名.war 解压warmv 文件名 路径名 移动文件mv 老文件名 新文件名 修改文件名称cp 文件1 文件2 拷贝文件chmod 权限 文件名 修改权限chown 所有者 文件 修改文件的所有者./可执行文件 运行文件alias 别 ...
用习惯centos系统的你,也许开始对rhl5使用很不爽,那就是没有yum资源,其实我也一样,很喜欢时不时的yum一下啊,可是你知道rhl5是没有yum源的,今天我们来看看如何配置yum源。首先cd /etc/yum.repos.d/cp rhel-debuginfo.repo rhel-debuginfo.repo.bak先删除rhel-debuginfo.repo文件中所有内容,然后添加以下内容: [base]name=CentOS-5 – Base#mirrorlist=http://mirrorlist.centos.org/?release=$releasever5&arc ...
最近做android手机数据上报,这里有点个人心得,希望抛砖引玉。做数据上报必须解决的问题:1、首先要保证你的程序一直在于后台运行,也就是所谓和守护程序一样,而且在任何认为kill和系统内存回收kill后,保证重启。2、获取系统内部资源。3、上报策略,间隔时间上报还是按月按天上报。4、监测网络,当网络开启的时候第一时间上报数据。5、服务器连接。 对于以上问题的解决:1、利用广播BroadcastReceiver监听,当系统启动时启动服务service,监听的action是android.intent.action.BOOT_COMPLETED,当服务被kill时在onDestroy()再次启动 ...
Global site tag (gtag.js) - Google Analytics