设计模式是什么

来源:互联网 发布:java classpath 设置 编辑:程序博客网 时间:2024/04/28 01:18

什么是设计模式

设计模式有甚多不同的表述:

设计模式是一种对问题本质的通用解决方案。

从设计或重构的角度来讲:

设计模式是对软件中可变性封装的通用的框架(可变性是软件中容易变化的部分)。

软件设计的目标是可扩展性,可插入性,灵活性。

可扩展性:新的功能可以很容易的加入到系统中去。

可插入性:可以很容易的将一个类抽出去,同时将另外一个有同样接口的类加入进来。

灵活性:可以允许平稳的修改代码,而不会涉及到很多的其他模块。

软件中不可避免的含有很多可变性,为了实现软件设计的目标,必然要对可变性做封装。

如何对这种可变性做封装呢?

封装必须遵照一定的原则:

1,一种可变性不应当散落在代码的很多地方,而应当被封装在一个对象里面。

同一种可变性的不同表象意味着同一个继承等级结构中的不同子类!

2.一种可变性不应当与另外一种可变性混合在一起。

基于这2个原则,任何人都可以在自己的系统中封装可变性,但是封装的好坏见仁见智。

但是一个良好的封装应当遵守6个原则。

设计模式6大原则

开闭原则:

一个软件应当对扩展开放,对修改关闭。

里氏代换原则:

任何基类出现的地方,子类一定可以出现。

依赖倒转原则:

要依赖于抽象,不要依赖于实现。开闭原则是目标,依赖倒转原则是实现开闭原则的手段。

合成/聚合复用原则:

要尽量使用合成/聚合,而不是继承关系达到复用的目的。

迪米特法则:

一个实体(事物在软件中的抽象,比如一个Person类表示一个人,也是一个实体)应当尽可能少的与其他实体相互作用。

接口隔离原则:

应当提供单独的专业的接口而不是大而全的总接口。

以下是各个原则对应的体现的比较明显的设计模式:

开闭原则-策略模式

里氏代换原则-代理模式,策略模式

依赖倒转原则-工厂方法模式,模板方法模式

接口隔离原则-备忘录模式(服务定制)

合成/聚合复用原则-代理模式等

迪米特法则-门面模式,调停者模式


21种设计模式归为三大类,创建模式,结构模式,行为模式

创建模式

创建模式是对类的实例化过程的抽象化。是对实例创建可变性的封装。

一些系统在创建对象时,需要动态决定怎么创建对象,创建那些对象,如何组合和表示这些对象。

创建模式描述了怎样构造和封装这些动态的决定。

创建模式分为类的创建模式和对象的创建模式2种。

主要的设计模式有:简单工厂模式,工厂方法模式,抽象工厂模式,单利模式,多例模式,建造模式,原型模式。

结构模式

描述如何将类或者对象结合在一起形成更大的结构。是对类或对象之间的组合可变性的封装。

分为类的结构模式和对象的结构模式2种。

主要有:适配器模式,缺省适配模式,合成模式,装饰模式,代理模式,享元模式,门面模式,桥梁模式。

行为模式

是对不同的对象之间责任划分和算法的抽象化。即是对责任划分过程或算法的可变性的封装。

分为类的行为模式和对象的行为模式

类的行为模式使用继承关系在几个类之间分配行为或责任。

对象的行为模式则使用对象的聚合来分配行为或责任。

主要有:不变模式,策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,解释器模式,调停者模式。



学习设计模式的时候一定要问自己一个问题:

这个设计模式封装了什么可变性(这个设计模式允许那个部分变化),为了封装这个可变性付出了什么代价?




0 0
原创粉丝点击