首页 > 代码库 > 面向对象的六大原则
面向对象的六大原则
正巧赶上当当200减100,就买了本《Android源码设计模式》
1,优化代码的第一步——单一职责原则SRP(Single Responsibility Principle)SRP
使代码尽可能减少耦合,增加可扩展性与灵活性。
个人理解就是:任务分工明确,每个类都有明确的方法,不要混淆在一起
2,使程序更稳定、更灵活——开闭原则OCP(Open Close Principle)
————Java世界中最最基础的设计原则
软件中的对象(类、模块、函数)应该对扩展是开放的,而对于开放是封闭的,这就是开放—关闭原则。
我个人的理解就是:程序一旦开发完成后,尽量不要对与原函数进行修改,如果要修改,可以通过继承这个class,通过重写来修改。而原来的类,也就变成了接口。
而在现实编码过程中,通过修改旧代码还是继承修改,都要视情况而定,不可迂腐。
3,构建扩展性更好的系统——里氏替换原则LSP()
面向对象的语言有三大特点:继承,封装,多态。
定义:简单来说就是,所有引用基类的地方必须能透明地使用其子类的对象。
也就是说,只要父类出现的地方,子类就可以出现,反之不成立。(抽象)
核心原理是抽象,而抽象又依赖于继承。
4,让项目拥有变化的能力——依赖倒置原则DIP(Dependent Inversion Principle)
这个原则代指了一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块的实现细节的目的,以来模块被颠倒了。
关键点:(1)高层模块不应该依赖于底层模块,二者都应该以来其抽象;
(2)抽象不应该依赖于细节;
(3)细节应该依赖于抽象。
在Java语言中,抽象就是指接口或者抽象类,二者都是不能直接被实例化的;细节就是实现类,实现接口或者继承抽象类而产生的类就是细节。其特点就是,可以直接被实例化,也就是可以添加一个关键则new来创建一个对象。
模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类实现。——面向接口编程,这里的抽象指的就是抽象。
5,使系统有更高的灵活性——接口隔离原则 ISP(InterfaceSegregation Principle)
定义一:客户端不应该依赖它不需要的接口。
定义二:类之间的依赖关系应该建立在最小的接口上。
说白了就是,让客户端以来的接口尽可能的小。
6,更好的可扩展性——迪米特原则LOD(Law of Demeter)
也称为最少知识原则。
一个类应该对自己需要耦合或者调用的类知道的最少,类的内部实现与调用者或者依赖着没有关系,调用者或者依赖者只需要知道它需要的方法即可,其他的一概不管。
总结:在应用开发中,最难的不是完成应用的开发工作,而是在后续的升级、维护过程中让应用拥抱变化。
所谓拥抱变化:在满足需求且不破坏系统稳定性的前提之下,保持高可扩展性、高内聚、低耦合,经历系统版本变化后让能保持清晰,灵活,稳定的系统结构。当然,这只 是一中理想状态,但是我们必须朝着这个方向努力,遵循面向对象六大原则是走向灵活软件之路所迈出的第一步。
面向对象的六大原则