摘要: 这是以前旧博客在13年规划写的一个系列,写了一部分内容,还没有完成。现在重新整理编写。计划从基础知识六大设计原则、设计模式中类的关系开始,然后会对iOS开发中的常用架构模式进行介绍,最后对GoF的23种设计模式进行分析。由于本人编写本系列文章时也是边学习边整理,因此持续的时间会比较长,更多的是希望和 阅读全文
posted @ 2016-07-25 21:15 LeeGof 阅读(842) 评论(3) 推荐(1) 编辑
摘要: 1.定义 一个软件实体(如类、模块、函数)应当对扩展开放,对修改关闭。 2.定义解读 在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的。那么如何应对需求变化的情况?这就是开放-关闭原则要谈的。 开放-封闭原则的思想就是设计的时候,尽量让设计的类做好后就不再修改,如果有新的需 阅读全文
posted @ 2016-07-25 21:11 LeeGof 阅读(4577) 评论(0) 推荐(0) 编辑
摘要: 1.定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle)。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 广义的迪米特法则定义:一个模块设计得好坏 阅读全文
posted @ 2016-07-25 21:08 LeeGof 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 1.定义 里氏替换原则的定义有两种,据说是由麻省理工的一位姓里的女士所提出,因此以其名进行命名。 定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都替换成o2时,程序的行为不发生任何变化,那么T2为T1的子类。 定义2:所有引用父类的地方都必须能够 阅读全文
posted @ 2016-07-25 20:39 LeeGof 阅读(1884) 评论(0) 推荐(0) 编辑
摘要: 1.定义 高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖细节;细节应该依赖抽象。 2.定义解读 依赖倒置原则在程序编码中经常运用,其核心思想就是面向接口编程,高层模块不应该依赖低层模块(原子操作的模块),两者都应该依赖于抽象。我们平时常说的“针对接口编程,不要针对实现编程”就是依 阅读全文
posted @ 2016-07-25 18:27 LeeGof 阅读(749) 评论(0) 推荐(0) 编辑
摘要: 1.定义 客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖应该建立在最小的接口上。 2.定义解读 定义包含三层含义: 一个类对另一个类的依赖应该建立在最小的接口上; 一个接口代表一个角色,不应该将不同的角色都交给一个接口,因为这样可能会形成一个臃肿的大接口; 不应该强迫客户依赖它们从来不用的 阅读全文
posted @ 2016-07-25 17:15 LeeGof 阅读(2795) 评论(0) 推荐(0) 编辑
摘要: 1.定义 就一个类而言,应该仅有一个引起它变化的原因。 2.定义解读 这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作。 3.优点 类的复杂度降低,一个类只负责一个功能,其逻辑要比负责多项功能简单的多; 类的可读性增强,阅读起来轻松; 可维 阅读全文
posted @ 2016-07-25 16:28 LeeGof 阅读(854) 评论(0) 推荐(0) 编辑
摘要: 什么是泛化关系?用一个例子简单的说:假设A是B和C的父类,B、C具有公共类(父类)A,说明A是B、C的一般化(概括,也称泛化),B、C是A的特殊化。 在编程上,泛化关系(Generalization)就是我们常说的继承关系,称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系, 阅读全文
posted @ 2016-07-25 15:02 LeeGof 阅读(2511) 评论(0) 推荐(0) 编辑