面向对象设计的原则

面向对象设计的SOLID原则



开放封闭原则(The Open Closed Principle)

** 一个软件实体如类、模块和函数应该对扩展开放,对修改代码关闭。即软件实体应尽可能在不修改原有代码的状况下进行扩展**设计模式

[========]微信

软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。若是不是调用实体的解耦,尽可能不要去修改实体的内容,避免实体本身的逻辑调用出错函数



里氏替换原则(The Liskov Substitution Principle)

** 全部引用父类的地方必须能透明地使用其子类的对象**设计

[========]代理

简而言之,就是遵循父类的定义原则(参数及参数类型、返回值及其类型、 逻辑处理。。。)。当一个子类继承了父类,那么子类的一些表现最好和父类的一致,保证有引用父类的地方,引用该子类也不会报错。对象



依赖倒置原则(The Dependency Inversion Principle)

**高层模块不该该依赖于低层模块,两者都应该依赖于抽象。
抽象不该该依赖于细节,细节应该依赖于抽象 **继承

[========]接口

这个和上面的开放封闭原则相似,高层模块模块不该该依赖底层模块,而是依赖于底层抽象出来的接口,剩下的有底层模块来完成,这个是须要底层模块开发出来时就考虑到的;而抽象出来的接口不要去关心具体实现的细节,可是细节应该依赖这个抽象的定义。好比,实现一个支付模块,对接支付的第三方有不少种,支付宝、微信、信用卡等。这时候若是开发了一个通用的支付对象,剩下的对接不一样支付平台的工做交给高层模块来作。此时的高层模块不该该依赖底层的具体实现的细节,而是要实现底层抽象出来的接口;而抽象出来的接口不用关心具体是如何去对接不一样的平台的,可是对应平台的细节应该要遵循接口的定义,如这里要你去对接支付平台,而你实现了去下载图片,这天然就是不行的图片



接口隔离原则(The Interface Segregation Principle)

使用多个专用的接口,而不是使用单一的总接口,即调用端不该该依赖那些它不须要的接口ip

[========]

当调用端去调用底层的模块,而底层的模块要求调用端必须实现它的全部抽象接口,可是,调用端去调用底层的模块不须要使用所有的抽象接口,这时候就会产生没必要要的工做。接口隔离原则强调,调用端不该该依赖那些不须要的接口



单一职责原则(The Single Responsibility Principle)

不要存在多于一个致使类变动的缘由。即一个类只负责一项职责

这个原则就是咱们常说的解耦,将不一样的功能让不一样的模块来实现,当发生变更时只须要修改其中的某个模块便可




设计模式的分类

建立型模式:

工厂模式、抽象模式、建立者模式、原型模式、单例模式

结构型模式:

适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式

行为型模式:

解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方式模式

相关文章
相关标签/搜索