【设计模式】对六大原则的宏观把控和微观细化

来源:互联网 发布:mac 命令行安装mysql 编辑:程序博客网 时间:2024/05/28 23:11

     一天之前,终于将设计模式的第二遍看完了。。在这两遍中,我又学到了很多知识。在之前看OOTV设计大赛时,总是提到面向对象设计的原则,这让我不明所以,直到看完整本书之后,才知道书中自有黄金屋。。这篇文章主要写的就是面向对象设计的六大原则。



     根据上图,我们可以轻松地得出,面向对象设计是以高内聚、低耦合为设计核心,抽象为基础,封装、继承和多态为特点。综合面向对象的原则、基础和特点,我们总结出了它的六大原则。通过这六大原则,我们还可以演化出多种设计模式。。下面就写一下我对这六大原则的理解。。


     依赖倒转

     是面向对象的标志!用哪种语言来编写程序不重要,重要的是程序中的依赖关系都是终止于抽象类或者接口,这就是面向对象的设计。

     定义

     1、 高层模块不应该依赖低层模块,两个都应该依赖抽象

     2、 抽象不应该依赖细节,细节应该依赖抽象


     单一职责

     如果一个类承担过多的职责,就等于把这些职责耦合在一起。一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。所以,软件设计真正要做的,就是发现职责并把那些职责相互分离。

     定义

     就一个类而言,应该仅有一个引起它变化的原因


     迪米特

     这个原则的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。其根本思想,是强调类之间的弱耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成较大波及。

     定义

     1、如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用

     2、如果其中一个类需要调用另一个类的某一个方法,可以通过第三者转发这个调用。


     合成/聚合复用

     它的优点是,有助于保持每个类被封装,并被集中在单个任务上。这样一来,就会降低继承所带来的强耦合,使程序不太可能增长为不可控制的庞然大物。

     定义

     尽量使用合成/聚合,尽量不要使用类继承


     里氏代换

     如果一个软件的实体使用的是一个父类的话,那么就一定适用于其子类,并且,察觉不出父类和子类对象的区别。更直白的说,就是在软件里面,把父类都替换成它的子类,程序的行为没有变化。

     定义

     子类型必须能够替换掉他们的父类型。

     正是因为有了里氏代换原则,才使得下面的开放封闭成为可能。由于子类的可替换性才使得父类的模块在无需修改的情况下可以扩展。

 

     开放封闭

     无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员就必须先猜测出最有可能发生的变化,然后构造抽象来隔离那些变化。

     开放封闭原则是面向对象设计的重点所在。开发人员应该仅对程序中,呈现出频繁变化的那些部分做出抽象。

     定义

     面对需求的更新,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。


     小结

     六大设计原则是面向对象技术的演化,可以理解为是对面向对象的继承。通过结合这六大原则,我们再对23种设计模式进行理解,那就事半功倍了。这又是米老师的思想,宏观把控,微观细化。米老师真是无处不在呀。。

2 0
原创粉丝点击