引言:设计模式、架构、框架、类库
设计模式:在oo开发过程中,在某种情境下,解决某重复问题的某种解决方案,关键词:方法,不是代码。
和架构、框架的关系:架构,程序设计方法,常见的有是MVC三层架构,而框架是对架构的实现,目的是为了实现解决方案的重用,框架中通常包含了多种设计模式。
框架和类库的区别:框架是为了实现解决方案的重用,而类库则是为了解决代码的重用。
正文:
1、策略模式:定义了一个算法族,分别封装起来,可以相互替换,实现了算法的变化独立于使用算法的客户。(封装变化部分)
2、观察者模式:定义了对象之间一对多的依赖关系,当一个对象变化时,其所有的依赖者都接收到通知,并自动更新。(针对接口编程)
3、装饰模式:动态地将责任添加到对象上,若要扩展功能,提供了比集成更具有弹性的解决方案。(多用组合,少用继承,开闭原则(对扩展开放,对修改关闭))
4、工厂模式:
4.1工厂方法:提供了定义对象的接口,而由子类确定具体实例化的类是哪一个,允许类将实例化推迟到子类。
4.2抽象工厂:定义了一个接口,用以实现相关或依赖的对象的家族,而不用指定具体类,到底是芝加哥的原料工厂还是纽约的原料工厂。
5、单例模式:确保类的实例只有一个,并提供了全局访问点;
6、命令模式:封装调用,将请求封装成对象,以便使不同的请求、队列或日志参数化其他对象,允许执行撤销操作。
7、适配器模式:将一个类的接口,转化为客户期望的另一个接口,从而使原本接口不兼容的类相互转化。
8、外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。
9、模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类之中。模板方法允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤;
10、迭代器模式:提供了一种方法,顺序地访问聚合对象(集合)内的每个元素,而又不暴露内部的具体实现。
11、组合模式:允许将对象组合成树形结构来表现“整体-部分”的层次结构。能让客户以相同的方式处理个别对象或者对象的组合。
12、状态模式:允许对象在内部状态变化时改变行为,对象看起来好像修改了实例化的类型。
13、代理模式:为另一个对象提供替身或占位符,用以控制对其的访问。
备注:
接口,泛指interface和接口内需要实现的方法