设计模式

208 阅读3分钟

一、设计模式的概念解读

设计模式是一套被反复使用、思想成熟、经过分类和无数实战经验的总结。使用设计模式是为了让系统代码可重用、可扩展、可解耦、更容易被人理解能保证代码的可靠性。设计模式使代码开发真正工程化;设计模式使软件工程的基石脉络。如同大厦的结构一样。只有夯实地基搭好结构,才能盖好健壮的大楼。也是我们迈向高级开发人员的必经一步。

二、设计原则

1、开闭原则:对拓展开放、对修改关闭(高考试卷)

2、里氏转换原则:子类继承父类,单独调用完全可以(盗版光盘)

3、依赖倒转原则:引用一个对象,如果这个对象有底层类型,直接引用底层(和尚打水,直接从井里打水到家,没必要打出来放一个桶里再弄回去)

4、接口隔离原则:每一个接口一种角色(汽车usb插口)

5、合成/聚合复用原则:新的对象应使用一些已有对象,使之成为新对象的一部分

6、迪米特原则:一个对象应对其他对象有尽可能少的了解

三、设计模式

1、工厂模式

(1)概念解读:

工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例延迟到子类。而子类可以重写接口方法以便创建的时候指向自己的对象类型(抽象工厂)

这个模式非常有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类定义需要创建的对象类型。

(2)工厂模式的作用和注意事项

作用(使用场景):

1、对象的构建十分复杂

2、需要依赖具体的环境创建不同的实例

3、处理大量具有相同属性的小对象

注意事项:

不能滥用工厂,有时候是个给代码增加复杂度

(3)工厂模式代码实现和总结

2、适配器模式

(1)概念解读:

适配器模式是将一个类(对象)的接口(方法或属性)转换成客户希望的另一个接口(犯法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一起工作。

(2)作用和注意事项

作用:

1、使用一个已经存在的对象,但其方法或接口不符合你的要求

2、创建一个可复用的对象,该对象可以与其他不相关或不可见的对象协同工作

3、使用已经存在的一个或多个对象,但是不能进行继承已匹配它的接口。

注意事项:

与代理模式的区别,代理模式是不改变原接口适配,而适配模式会改变原来不符合规范的接口

(3)代码实现和总结


3、迭代器

概念解读:

迭代器提供一种方法顺序访问一个聚合对象中各个元素,而又不是需要暴露该方法中的内部表示。

jquery中我们经常会用到一个each函数就是迭代器模式

模式作用:

1、为了遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作

2、对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,使用迭代器模式

注意事项:

1、一般的迭代,我们至少要有2个方法,hasNext()和next(),这样才做到遍历所有对象。

2、遍历的同时更改迭代器所在的集合结构可能导致问题