为什么使用设计模式——设计模式

什么是设计模式

Christopher Alexander说过:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,这样,你就能一次又一次地使用该方案而不必做重复劳动。这个思想同样适用于面向对象的设计模式,核心就在于提供给了相关问题的解决方案

一般而言,一个模式有4个基本要素

1、模式名称(pattern name),它用一两个词来描述模式的问题,解决方案和效果。

2、问题(problem)描述了应该在何时使用模式。

3、解决方案(solution)描述了设计的组成成分,他们之间的相互关系以及各自的职责和协作方式。

4、效果(consequences)描述了模式应用的效果以及使用模式应权衡的问题。

设计模式怎样解决设计问题

1、寻找合适的对象

面向对象程序有对象组成,对象包括了数据和对数据进行操作的过程,过程称为方法或操作。对象收到客户的请求后,执行相应的操作。其中面向对象设计最困难的部分就是如何讲系统分解成对象集合。

2、决定对象的粒度

描述了我们应该决定一个对象应该是什么?

3、指定对象的接口

对象生命的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构(signature)。对象接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口中的型构的请求都可以发送给该对象。

在面向对象系统中,接口是基本的组成部分。对象只有通过他们的接口才能与外部交流。对象接口与其功能实现是分离的,不同对象可以请求做不同的实现,也就是说,两个有相同接口的对象可以有完全不同的实现。

4、描述对象的实现

针对接口编程,而不是针对实现编程

5、运用复用机制

优先使用对象组合,而不是类继承,

6、关联运行时刻和编译时刻的结构

7、设计应支持变化

怎样选择设计模式

  • 考虑设计模式是怎么解决实际问题的
  • 浏览模式的恶意图部分
  • 研究模式怎么样互相关联
  • 研究目的相似的模式
  • 检查重新设计的原因
  • 考虑你的设计中哪些是可变的

设计模式分类

1、创建型模式,5种

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

2、结构型模式,7种

适配器模式、装饰器模式、外观模式、桥接模式、组合模式、享元模式、代理模式

3、行为型模式,11种

策略模式、模版方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

总结设计模式的六大原则

1、开闭原则OCP

对扩展开放、对修改关闭

2、里氏代换原则LSP

在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类

3、控制反转原则IOC

针对接口编程、依赖抽象而不依赖于具体

4、接口隔离原则ISP

使用多个隔离的接口,比使用单个接口更好

5、迪米特法则DP

一个实体应当尽量少的与其他实体发生相互作用,使得系统功能模块相对独立

6、合成复用原则

尽量使用组合/聚合的方式,而不是使用继承

最后注意:MVC设计模式不属于23种设计模式之一

猜你喜欢

转载自blog.csdn.net/qq_22798455/article/details/82080132
今日推荐