Swift 入坑(二,设计模式--上)

引言

1,什么是设计模式

  • 这里引用GOF的<设计模式-可复用面向对象软件的基础>
    Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题, 以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”.

    模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定 而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

  • 引用<Java与模式>
    模式化的过程就是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找到普遍适用的解决方案的过程。简而言之,人们在自己的环境中不断发现问题的解决方案的时候,发现有一些问题及其解决方案不断变换面孔出现,但这些不同的面孔有着共同的本质,这些本质就是模式.

2,为何设计模式

  • 设计模式都是前辈们经过多年的摸爬滚打总结出来的解决问题的抽象模板, 学习设计模式,就是学习它的idea. 站在巨人的肩膀上学习如何合理的组织代码,如何解耦,如何真正的达到对修改封闭对扩展开放的效果. 学习如何设计出可复用的,可维护的软件.

S.O.L.I.D 原则

1, 单一职责原则

  • 定义: 类的职责要单一, 一个类只负责一个职责

    1
    eg

2, 里氏替换原则

  • 定义: 所有引用基类的地方必须能透明地使用其子类的对象。

    如果调用的是父类的话,那么换成子类也完全可以运行。

    1
    eg

3,依赖倒置原则

  • 定义: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

    依赖倒置原则的中心思想是面向接口编程

    1
    eg

4,接口隔离原则

  • 定义: 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

    接口隔离原则的含义是: 建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用

    1
    eg

5,迪米法特原则

  • 定义: 一个对象应该对其他对象保持最少的了解。

    尽量降低类与类之间的耦合

1
eg

6,开闭原则

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

    当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

1
eg

小结:

  • 单一职责原则告诉我们实现类要职责单一;
  • 里氏替换原则告诉我们不要破坏继承体系;
  • 依赖倒置原则告诉我们要面向接口编程;
  • 接口隔离原则告诉我们在设计接口的时候要精简单一;
  • 迪米特法则告诉我们要降低耦合。
  • 而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

参考

S.O.L.I.D.类设计原则

设计模式六大原则