首页 > 代码库 > 10、设计模式

10、设计模式

一、单例设计模式

懒汉(线程安全问题)同步锁,每次判断锁,效率低,外层再加一个判断是否为空,效率高
     1、私有化构造方法
     2、声明引用类型变量,不要创建对象
     3、声明静态方法获取本类对象,判断是否已经创建了本类的对象,如果已经创建了直接返回,没有则创建引用类型变量返回
 

二、装饰者设计模式

增强一个类的功能,还可以让这些类互相装饰
通过继承增强一个类的功能:
优点:代码结构清晰易懂
缺点:使用不灵活,会导致继承的体系过于庞大
 

步骤:

1、在装饰类内部维护一个被装饰类的引用
2、让装饰类有共同的父类或者父接口
 
父类有无参的构造方法时默认调用,要是没有无参的构造方法则需要指定有参构造方法
修饰模式实战增强类:
     优点:内部可以通过多态对多个需要增强的类进行增强,让这些修饰类达到互相装饰的效果,使用灵活
     缺点:需要内部通过多态维护需要被增强类的实力,使代码复杂
 
 

三、观察者设计模式

当一个对象发生指定动作时,通知另外一个对象做出相应的处理
发布 - 订阅、模型 -视图、源-收听者、从属者
将观察者和被观察的对象分离开、一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。
通常被用来实作事件处理系统,Swing大量使用观察者模式,许多 GUI框架也是如此
int random = new Random().nextInt(1000);  // 产生范围内的随机数
 

步骤:

     1、当目前对象发生指定动作时,要通知另外的对象做相应的处理,把对方的相应处理方法定义在接口上
     2、在当前对象中维护接口的引用,当当前对象发生指定动作时即可调用指定的方法
 
 

四、工厂设计模式

用于生产对象
该模式将创建对象的过程放在了一个静态方法中来实现 . 在实际编程中 ,如果需要大量的创建对象 , 该模式是比较理想的 .
可以用反射产生任意类型的对象
 
 
 
 

10、设计模式