读《大话设计模式》ing...

2018-07-29  本文已影响13人  阿洋12138

设计模式参考地址
设计原则

第一章 代码无错就是优?--- 简单工厂模式

接口(Interface)

类图中关系(relation)

第二章 商场促销 --- 策略模式


  • 单一职责原则
  • 开放封闭原则
  • 依赖倒转原则
  • 实际上这三个原则都在讲一个东西,怎样让你的代码易维护、易扩展、易复用、灵活多样!

第三章 拍摄UFO --- 单一职责原则(SRP)

第四章 考研求职两不误 --- 开放封闭原则(OCP)

代码重构的重要性!!!!!

第五章 会修电脑不会修收音机 --- 依赖倒转原则

第六章 穿什么有这么重要? --- 装饰模式

第七章 为别人做嫁衣 --- 代理模式

  1. 远程代理
    为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
    例:WebService在.Net中的应用(当我在应用程序的项目中加入一个Web引用,引用一个WebService,此时项目回生成一个WebReference的文件夹和一些文件,其实它们就是一个代理,使得客户端程序调用代理就可以解决远程访问的问题)
  2. 虚拟代理
    根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样可以达到性能的最优。
    例:打开一个很大的HTML网页时,里面很可能有很多的文字和图片,但是你还是可以很快打开它,但是你最先看到的是所有的文字,但是图片是一张一张的显示出来的。那些未打开的图片框就是通过虚拟代理来代替了真是的图片,此时代理存储的是真实图片的路径和尺寸。
  3. 安全代理
    用来控制真实对象访问时的权限问题。
  4. 智能指引
    当调用真实的对象时,代理处理另外一些事。

优点:

  1. 职责清晰。 2. 高扩展性。 3. 智能化。
    缺点:
  2. 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
  3. 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

注意事项:

  1. 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
  2. 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

第八章 雷锋依然在人间 --- 工厂方法模式

第十五章还会提到抽象工厂模式
说到这里让我想到iOS中的类簇,但这是基于抽象工厂模式的设计,忍不住现在这里提一点。
在iOS开发中NSString,NSNumber等等这些类实际上它们虽然也是一个类,但是不是一个纯粹的类,叫他们类簇更合适。

类簇:类簇是Foundation框架中广泛使用的设计模式。类簇将一些私有的、具体的子类组合在一个公共的、抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不减少功能的丰富性。类簇基于抽象工厂设计模式。(关于抽象工厂模式详见第十五章)

类簇架构代表一个反映简单概念的设计。

类簇中的抽象超类必须声明创建其私有子类的方法。根据调用的创建方法分配正确类型的对象是超类的责任。在Foundation框架中,通常通过调用+ className...或alloc...和init...方法来创建对象。

第九章 简历复印 --- 原型模式

第十章 考题抄错会做也白搭 --- 模版方法模式

第十一章 无熟人难办事? --- 迪米特法则

迪米特法则可以简单说成:talk only to your immediate friends。 对于OOD来说,又被解释为下面几种方式:一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。因此,应用迪米特法则有可能造成的一个后果就是:系统中存在大量的中介类,这些类之所以存在完全是为了传递类之间的相互调用关系——这在一定程度上增加了系统的复杂度。

门面模式(Facade)中介模式(Mediator),都是迪米特法则应用的例子。

第十二章 牛市股票还会亏钱? --- 外观模式

第十三章 好菜每次回味不同 --- 建造者模式

第十四章 老板回来,我不知道 --- 观察者模式

第十五章 能不换DB吗? --- 抽象工厂模式

ing...

上一篇下一篇

猜你喜欢

热点阅读