浅谈设计模式——对象的创建型模式

来源:互联网 发布:淘宝女服装店名大全 编辑:程序博客网 时间:2024/05/02 21:28

近期对Java的设计模式比较感兴趣,设计模式更好的用途只能等到工作后慢慢地体会了,以下总结一下每种设计模式的摘要,方便有个知识框架。感兴趣的可以参考阎宏博士的《Java与模式》,同时参考以下博客,个人认为写得十分好的!

http://www.cnblogs.com/java-my-life/



1 工厂模式

   简单工厂模式:即静态工厂方法模式,由一个工厂对象决定创建出哪一种产品类的实例。示例代码如下:

             public static Login factory( String type ){

                    if ( type.equals(“password”)){

   return new PasswordLogin();

}else if (type.equals(“password”)){

   return new DomainLogin();

}else{

 ......

 }

}

   优点:可以决定在什么时候创建哪一个登录验证类的实例,调用者可以免除直接创建对象的责任。

   缺点:工厂类不能工作的话,整个系统就会受到影响,另外,随着类型增多,if-else会更多。

   工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。(如根据文件的类型不同,创建不同的工厂类,然后每个工厂类是一个简单工厂模式)

   角色:抽象工厂角色、具体工厂角色、抽象导出角色、具体导出角色

 

2抽象工厂模式

注意:抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。

 

3 单例模式

         饿汉式单例类

懒汉式单例类

双重检查锁(加volatile是一种解决方法,另一种没有提到的是基于类的初始化)

类级内部类(延迟一次加载)

 

4 建造模式

  即:将一个产品的内部表象与产品的生产过程分割开来

角色分为:抽象建造者、具体建造者、导演者、产品

应用场景:

(1)需要生成的产品对象有复杂的内部结构,每一个内部成分本身可以是对象,也可以仅仅是一个对象(即产品对象)的一个组成部分。

(2)需要生成的产品对象的属性相互依赖。建造模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值,使用建造模式是一个很好的设计思想。

(3)在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。

应用实例:电子杂志邮件,欢迎订阅与欢送订阅服务

 

5 原型模式

即,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象

角色分为:客户角色、抽象原型角色、具体原型角色

注意:引申出Java中的克隆方法:深拷贝和浅拷贝

应用实例:孙大圣的身外身法术

0 0
原创粉丝点击