设计模式

前言

笔者在现在iOS开发中很少使用设计模式,但在日常开发中,接触的CocoTouch开发框架中,很多开发类库都用到了软件设计原则,和设计模式。遵循软件设计原则,合理使用设计模式,对于提高软件可阅读性,扩展性,可维护性,稳定性,是很有必要的。自己现在也是通过浏览博客,查阅资料,对软件设计原则,设计模式有一个大概的了解,先做下文章记录,以后自己在开发中有更深入的学习和应用,会更新博客,写下自己的见解。

软件设计7大原则

编写 全称 中文名称
S Single Responsibility Principle 单一职责原则
O Open Close Principle 开闭原则
L Liskov Substitution Principle 里氏替换原则
I Interface Segregation Principle 接口隔离原则
D Dependence Inversion Principle 依赖倒置原则
L Law Of Demeter 迪米特法则
C Composite/Aggregate Reuse Principle CARP 组合/聚合复用原则

前5中被称之为SOLID原则

思维导图

设计原则定义

开闭原则(Open Close Principle)

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

单一职责原则(Single Responsibility Principle)

一个类只允许有一个职责,即只有一个导致该类变更的原因。

依赖倒置原则(Dependency Inversion Principle)

  • 依赖抽象,而不是依赖实现。
  • 抽象不应该依赖细节;细节应该依赖抽象。
  • 高层模块不能依赖低层模块,二者都应该依赖抽象。

接口分离原则(Interface Segregation Principle)

多个特定的客户端接口要好于一个通用性的总接口。

迪米特法则(Law of Demeter)

一个对象应该对尽可能少的对象有接触,也就是只接触那些真正需要接触的对象。

里氏替换原则(Liskov Substitution Principle)

所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。

组合/聚合复用原则

要尽量使用合成/聚合,尽量不要使用继承。

23种设计模式

思维导图

设计模式的三个分类

创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。

结构型模式:把类或对象结合在一起形成一个更大的结构。

行为型模式:类和对象如何交互,及划分责任和算法。

分类模式的关键点

单例模式

某个类只能有一个实例,提供一个全局的访问点。

简单工厂

一个工厂类根据传入的参量决定创建出那一种产品类的实例。

工厂方法

定义一个创建对象的接口,让子类决定实例化那个类。

抽象工厂

创建相关或依赖对象的家族,而无需明确指定具体类。

建造者模式

封装一个复杂对象的构建过程,并可以按步骤构造。

原型模式

通过复制现有的实例来创建新的实例。

适配器模式

将一个类的方法接口转换成客户希望的另外一个接口。

组合模式

将对象组合成树形结构以表示“”部分-整体“”的层次结构。

装饰模式

动态的给对象添加新的功能。

代理模式

为其他对象提供一个代理以便控制这个对象的访问。

亨元(蝇量)模式

通过共享技术来有效的支持大量细粒度的对象。

外观模式

对外提供一个统一的方法,来访问子系统中的一群接口。

桥接模式

将抽象部分和它的实现部分分离,使它们都可以独立的变化。

模板模式:

定义一个算法结构,而将一些步骤延迟到子类实现。

解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器。

策略模式

定义一系列算法,把他们封装起来,并且使它们可以相互替换。

状态模式

允许一个对象在其对象内部状态改变时改变它的行为。

观察者模式

对象间的一对多的依赖关系。

备忘录模式

在不破坏封装的前提下,保持对象的内部状态。

中介者模式

用一个中介对象来封装一系列的对象交互。

命令模式

将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。

访问者模式

在不改变数据结构的前提下,增加作用于一组对象元素的新功能。

责任链模式

将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。

迭代器模式

一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。


Reference

iOS设计模式详解

JAVA设计模式总结之23种设计模式]

面向对象设计的六大设计原则(附 Demo & UML类图)

-------------本文结束感谢您的阅读-------------
分享到:
0%