前言:前段没有时间,趁现在把设计模式的东西整理一下。内容大部分是《Android源码设计模式解析和实战》
1.1 优化代码的第一步——单一职责原则
1.2 让程序更稳定、更灵活——开闭原则
1.3 构建扩展性更好的系统——里氏替换原则
1.4 让项目拥有变化的能力——依赖倒置原则
1.5 系统有更高的灵活性——接口隔离原则
1.6 更好的可扩展性——迪米特原则
----------------------------------------------------------
1.单一职责原则:
对于一个类,应该仅有一个引起它变化的原因。
单一职责原则的划分界限不是很清晰,需要每个人自己靠个人经验去界定。但是还是有一定的基本原则的:比如,2个完全不同的功能不应该放在一个类里面。一个类应该是一组相关性很高的函数、数据的封装。
2.开闭原则:
软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。
除了错误应该修改源码,扩展应该通过新建不同的类来实现。
但是在实际的开发中,一般是修改原来的代码和扩展同时进行。
按我的理解,这里的意思应该是扩展的时候,如果可能,尽量用接口去扩展功能。
3.里氏替换原则:
LSP:所有引用基类的地方必须能透明地实用其子类的对象。
通俗的说:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本不需要知道是父类还是子类。,但是,反之就不行。
里氏替换原则,其实可以想想Android里面的View和TextView、Button等之间的关系。
里氏替换原则和开闭原则不弃不离,一起使用,他们的核心思想就是------抽象。
在代码中使用抽象是代码优化的第一步。
DIP:依赖倒置原则:使得高层次的模块不依赖于低层次的模块的具体实现细节的目的。
大致可以理解为:
1.高层次的模块不依赖低层次模块,两者都应该依赖其抽象。
2.抽象不应该依赖于细节。
3.细节应该依赖于抽象。
面向接口编程是面向对象编程的精髓之一。
ISP:接口隔离原则
客户端不应该依赖它不需要的接口。
其实就是:让客户端依赖的接口尽可能地小。
LOD:迪米特原理:(最少知识原则)一个对象应该对其他对象有最少的了解。
通俗的讲:一个类应该对自己需要耦合或者调用的类知道得最少,类的内部如何实现与调用者或者依赖者没有关系,调用者或者依赖者只需知道它需要的方法即可。
LOD还有另一种说法:
只与直接的朋友通信。
当一个类对自己需要调用或者耦合的类知道的最少的时候,别调用或者耦合的类内部修改了,那么调用者也不会知道。这样就使系统很好的实现了低耦合性和高扩展性。
PS:欢迎转载。