设计模式总结

一、分类(创建、结构和行为型)

创建型


1、系统架构技能之设计模式-单件模式

2、系统架构技能之设计模式-工厂模式

3、系统架构技能之设计模式-抽象工厂模式

4、系统架构技能之设计模式-创建者模式

5、系统架构技能之设计模式-原型模式


结构型

1、系统架构技能之设计模式-组合模式

2、系统架构技能之设计模式-外观模式

3、系统架构技能之设计模式-适配器模式

4、系统架构技能之设计模式-桥模式

5、系统架构技能之设计模式-装饰模式

6、系统架构技能之设计模式-享元模式

7、系统架构技能之设计模式-代理模式


行为型

1、系统架构技能之设计模式-命令模式

2、系统架构技能之设计模式-观察者模式

3、系统架构技能之设计模式-策略模式

4、系统架构技能之设计模式-职责模式

5、系统架构技能之设计模式-模板模式

6、系统架构技能之设计模式-中介者模式

7、系统架构技能之设计模式-解释器模式


二、创建型设计模式

(1)单件模式

单例模式:是一种软件设计中常用的设计模式,主要是用来控制某个类必须在某个应用程序中只能有一个实例存在。

具体实现分为外部控制方式:单件的对象外面包一层。

内部控制方式:单击的对象本身,没有外包一层,要注意此时构造函数应为私有的,不对外暴漏。

难点在于多线程的情况,具体参加:http://www.cnblogs.com/hegezhou_hot/archive/2010/10/02/1841390.html

(2)工厂模式和简单工厂模式

工厂模式是创建型模式中最典型的模式,主要是用来创建对象,减少我们在使用某个对象时的new() 操作。

(3)抽象工厂模式

三种工厂模式的异同点:

相同点:

1、都是为客户调用程序与具体的对象类型之间提供了一个解耦作用,这里怎么说呢?其实就是应用程序不关心这个对象是怎么出来的,只关系如何使用这个对象,而且以后就算对象发生变化,那么也不需
要修改用户应用程序的代码。
2、提高了程序的可维护性和低耦合性。

不同点:

1、简单工厂模式:是简单的一些列没有任何依赖关系的对象的创建,内部包含复杂的逻辑关系,一半是通过配置或者参数来进行创建对象,适合对象类型不多,并且不会经常新增的情况下。
工厂模式:每个工厂负责具体类型对象的创建,提供了可以动态新增产品类型的创建,并不需要修改现有的程序就可以无缝的新增产品类型。
抽象工厂模式:支持动态的新增对象类型和新增工厂类型,实现多种依赖关系的对象或者组合关系的创建,适合现有项目中的对象创建过程。
2、简单工厂模式:内部逻辑复杂,不符合高内聚的原则。
工厂模式:每次新增一个对象类型,就必须新增一个对应的创建工厂,无疑这是一个非常大的工作量。
抽象工厂模式:是在简单工厂模式的基础上经过改进具有前2个模式的优点,又屏蔽了他们的一些缺点。


(4)创建者模式

创建者模式:将构造复杂对象的过程和组成对象的部件解耦。就像攒电脑一样,不管什么品牌的配件,只要兼容就可以装上。

举个例子:前几天陪朋友去装机店攒了一台电脑,看着装机工在那里熟练的装配着机器,不禁想起来了培训时讲到的建造模式。作为装机工,他们不用管你用的CPU 是Intel 还是AMD,也不管你的显卡是2000 千大元还是白送的,都能三下五除二的装配在一起——一台PC 就诞生了!当然对于客户来说,你也不知道太多关于PC 组装的细节。

建造者模式使用的场景,一是产品类非常的复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式是非常合适。

创建者模式类图:


创建者模式的优点:建造模式可以使得产品内部的表象独立变化。在原来的工厂方法模式中,产品内部的表象是由产品自身来决定的;而在建造模式中则是“外部化”为由建造者来负责。这样定义一个新的具体建造者角色就可以改变产品的内部表象,符合“开闭原则”。

创建者模式的例子最好看“设计模式之禅”上面的。


(5)原型模式

原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

原型模式与其它创建型模式有着相同的特点:它们都将具体产品的创建过程进行包装,使得客户对创建不可知。就像上面例子中一样,客户程序仅仅知道一个抽象产品的接口。当然它还有过人之处:
通过增加或者删除原型管理器中注册的对象,可以比其它创建型模式更方便的在运行时增加或者删除产品。
如果一个对象的创建总是由几种固定组件不同方式组合而成;如果对象之间仅仅实例属性不同。将不同情况的对象缓存起来,直接克隆使用。也许这比采用传递参数重新new 一个对象要来的快一些。

类图:


总之,由于 clone 方法在java 实现中有着一定的弊端和风险,所以clone 方法是不建议使用的。因此很少能在java 应用中看到原型模式的使用。但是原型模式还是能够给我们一些启迪。



二、结构型设计模式

(1)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值