面向对象设计原则整理与归纳

一、面向对象基本原则
1、单一职责原则(SRP)
     就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
2、开放封闭原则
     软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。其意是对于扩展是开放的,对于更改是封闭的;无论模块是多的封闭,都会存在一些无法对之封闭的变化。既然不能完全的封闭,设计人员必须对于他的设计的模块应该对哪种变化封装做出选择,他必须先猜测出可能发生变化的种类,然后构造抽象类隔离那些变化。开放-封闭原则是面向对象设计的核心所在,遵循这个原则可以使得点吗可维护、可扩展、可复用、灵活性好。
3、里氏替换原则
     子类必须能够替换掉他们的父类型。一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的却别。即在软件里,把父类都换成它的子类,程序行为没有变化。只有当子类可以替换掉父类,软件单位的功能不收到影响时,父类才能指正被复用,而子类也能够在父类的基础上增新的行为。
4、依赖倒置原则
     高层模块不应依赖于低层模块,他们都依赖于抽象。依赖倒置其实可以说是面向对象设计的标志,用哪种语言写不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是宗旨与抽象类或者接口,那就是面向对象
的设计,反之那就是过程的设计。
5、接口隔离原则
     不应该强迫客户程序依赖它们不用的方法,接口应该小而完善。
6、迪米特法原则:
     如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。它首先强调的前提是在类的设计结构上,每一个类应当尽量降低成员访问权限,也就是说做好自己的权限控制;迪米特法则其根本思想是强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。
7、封装变化点原则(ECP):
    使用封装来创建对象之间的分界层,让设计者可以在层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。
8、优先使用对象组合,而不是类继承原则(FOCP):
     尽量使用对象组合,尽量不要使用类继承。对象组合有助于你保持每个类被封装,并被集中在单个任务上,这个类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

二、设计模式
设计模式的分类
1)创建型模式
     这种模式关注的是如何创建对象,其核心思想是要把对象的创建和使用分离(解耦)以取代传统对象创建方式可能导致的代码修改和维护上的问题。它分为工厂模式、原型模式、建造者模式、单例模式。
2)结构型模式
     这种模式关注的是对象之间的关系,主要涉及如何组合各种对象以便获得更加灵活的结构。它分为装饰模式、外观模式、组合模式、享元模式、代理模式、适配器模式、桥接模式。
3)行为型模式
   这种模式关注的是对象的行为或者交互方面内容,主要涉及算法和对象之间的职责分配。通过使用对象组合,行为模式可以描述一
组对象应该如何协作来完成一个整体任务。它分为模板方法模式、观察者模式、命令模式、迭代器模式、状态模式、中介者模式、备忘录模式、职责连模式、访问者模式、解释器模式。

猜你喜欢

转载自blog.csdn.net/leiyang2014/article/details/132052251