设计模式总结
模式:
主要的作用是实现代码的重复使用,而不是为了提高性能,模式不能保证性能得到优化。
第一篇:
创建模式:
1)。简单工厂模式:
使用条件(不是必须的)
:所有的子类实现共同的接口。
使用方法:客户端得到工厂(得到的方法有很多,比如JNDI,工厂的static方法,直接创建工厂等等)
升级:增加新的子类,从原有的接口派生新的子类,当然也可以从原有的子类派生。
工厂:1。直接修改工厂(次方法有时候不可取)
2。从工厂派生新的工厂
注意:工厂不一定是实类,可以是抽象类
2)。抽象工厂模式:
次模式进一步抽象了,定义抽象工厂和抽象接口
用户可以扩张工厂和创建新的子类。
一般的使用条件是存在多个产品簇的时候(多个子类接口)
使用方法:用户创建具体工厂的,可以造型到抽象工厂类,
其实和简单工厂相比:
a.实现产品的簇化,也就是可以增加新的类别的产品接口,而不是增加某一个子类。
b.将创建子类实例的工作交给抽象工厂的实现工厂了,可以认为对工厂的创建也采用简单工厂的设计模式。
升级:基本可以参考简单工厂模式。
3)。单一模式(有限模式)
使用条件:控制实例的数量
该类必须提供自己实例,允许其他的类访问该实例。
使用的方法:一般不直接new,而访问该类的static变量或者方法。该模式很简单
但是注意有2种创建方式:
a.该类在载入的时候就创建该类的实例(俄汉模式):资源利用可能不好,但是响应的速度快
b.在载入的时候不创建,只有有客户端需要该实例的时候才创建(懒汉模式):刚好和上面的相反
4)。builder模式
该模式和简单工厂模式很相似。
但是该模式注重的时候复杂对象的创建,而不是象工厂模式那样注重:返回一系列相关的子类实例
使用方法和简单工厂模式差不多。
第二篇 结构模式
1)。外观模式
就是为一系列的类提供一个统一的接口
为一个子系统提供一个供外部调用的统一接口,当要升级的时候,只要改变接口或者其实现就可以了。
其实在工厂的创建模式里面;子类从接口派生的时候就采用了fascade模式
使用方法:创建子类而返回共同的接口
该模式比较简单
2)。变压器模式
使用条件:希望将不同的接口或者类联系起来的时候
使用方法:实现变压器(一般是一个实类,实现或者继承目标,依赖或者实现源)
当变压器继承目标类的时候称为实例变压器,此时如果要改变目标的话就得重新实现一个变压器
当变压器实现目标接口的时候称为类变压器,此时如果改变目标接口可以事先让变压器实现多个接口目标
在变压器处理方法中,可以接受源的共同的接口或者抽象类(采用外观模式),这样可以实现多个源于多个目标
的对应。
主要的作用是实现代码的重复使用,而不是为了提高性能,模式不能保证性能得到优化。
第一篇:
创建模式:
1)。简单工厂模式:
使用条件(不是必须的)
:所有的子类实现共同的接口。
使用方法:客户端得到工厂(得到的方法有很多,比如JNDI,工厂的static方法,直接创建工厂等等)
升级:增加新的子类,从原有的接口派生新的子类,当然也可以从原有的子类派生。
工厂:1。直接修改工厂(次方法有时候不可取)
2。从工厂派生新的工厂
注意:工厂不一定是实类,可以是抽象类
2)。抽象工厂模式:
次模式进一步抽象了,定义抽象工厂和抽象接口
用户可以扩张工厂和创建新的子类。
一般的使用条件是存在多个产品簇的时候(多个子类接口)
使用方法:用户创建具体工厂的,可以造型到抽象工厂类,
其实和简单工厂相比:
a.实现产品的簇化,也就是可以增加新的类别的产品接口,而不是增加某一个子类。
b.将创建子类实例的工作交给抽象工厂的实现工厂了,可以认为对工厂的创建也采用简单工厂的设计模式。
升级:基本可以参考简单工厂模式。
3)。单一模式(有限模式)
使用条件:控制实例的数量
该类必须提供自己实例,允许其他的类访问该实例。
使用的方法:一般不直接new,而访问该类的static变量或者方法。该模式很简单
但是注意有2种创建方式:
a.该类在载入的时候就创建该类的实例(俄汉模式):资源利用可能不好,但是响应的速度快
b.在载入的时候不创建,只有有客户端需要该实例的时候才创建(懒汉模式):刚好和上面的相反
4)。builder模式
该模式和简单工厂模式很相似。
但是该模式注重的时候复杂对象的创建,而不是象工厂模式那样注重:返回一系列相关的子类实例
使用方法和简单工厂模式差不多。
第二篇 结构模式
1)。外观模式
就是为一系列的类提供一个统一的接口
为一个子系统提供一个供外部调用的统一接口,当要升级的时候,只要改变接口或者其实现就可以了。
其实在工厂的创建模式里面;子类从接口派生的时候就采用了fascade模式
使用方法:创建子类而返回共同的接口
该模式比较简单
2)。变压器模式
使用条件:希望将不同的接口或者类联系起来的时候
使用方法:实现变压器(一般是一个实类,实现或者继承目标,依赖或者实现源)
当变压器继承目标类的时候称为实例变压器,此时如果要改变目标的话就得重新实现一个变压器
当变压器实现目标接口的时候称为类变压器,此时如果改变目标接口可以事先让变压器实现多个接口目标
在变压器处理方法中,可以接受源的共同的接口或者抽象类(采用外观模式),这样可以实现多个源于多个目标
的对应。
该文章经过本人整理所得,欢迎转载,转载时请加上本文地址;本文基于署名 2.5 中国大陆许可协议发布,请勿演绎或用于商业目的,但是必须保留本文的署名张志涛(包含链接如您有任何疑问或者授权方面的协商,请给我留言。