一、总论
GoFo给出了23中设计模式,设计模式是对已有编程经验的总结,是为了提高代码的复用性,可维护性(让人能看得懂)。
二、设计模式的原则
开闭原则(Open Closed Principal,OCP)、
里氏代换原则(Liskov Substitution Principle,LSP)、
依赖倒转原则(Dependency Inversion Principle,DIP)、
接口隔离原则(Interfce Segregation Principle,ISP)、
合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)、
最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则)。
开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。其他几条,则可以看做是开闭原则的实现方法。
开闭原则
尽量不修改模块内部,而是在原有模块上扩展。
里氏代换原则
如果一个软件实体使用父类的话,那么它也可以使用子类。
依赖倒转原则
程序中所有依赖的关系应该终止于抽象类或者接口,而不是细节。
合成/聚合复用原则
尽量使用合成聚合,尽量不使用继承。
最小知识原则
两个类不直接通信时,就不应当发生直接的相互作用。如果一个类需要调用另一个类时,通过第三者实现。
三、23中设计模式较常用的介绍
Observer(观察者模式):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
Singleton(单例模式):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时如何处理这些缺陷。
Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
结合Android项目!!
1、按钮处于listen状态,只要被触发就做出相应动作。
2、关闭activities,只创建一个实例存放所有activities,结束时析构掉该实例。
结合STL源码数据结构的实现!!
3、栈、队列对双端队列的适配。