天天看点

六大原则今天看了一本叫做大话设计模式的书,里面提到了原则,所以就准备写一篇文章,作为读后感,方便自己以后可以查看

今天看了一本叫做大话设计模式的书,里面提到了原则,所以就准备写一篇文章,作为读后感,方便自己以后可以查看

单一职责原则

单一职责原则:就一个类而言,应该仅有一个引起它变化的原因
	软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离,如果你能够想到多余一个的动机去改变一个类,
	那么这个类就具有多余一个的职责,就应该考虑职责分离。达到易维护,易扩展,易复用,灵活多样。一个类承担的职责
	过多,就等于把这些职责耦合在一起,一个职责发生变化可能会抑制或改变这个类完成其他职责的能力,这种耦合会导致
	脆弱的设计,当发生变化时,设计会发生意向不到的破坏
	例子:比如说俄罗斯方块游戏。可以分为2个职责(游戏逻辑职责,手势按键职责)
	游戏逻辑职责: 对下落,变形,碰撞判断,消除进行但是单一职责处理
	手势按键职责: 对手势的上下左右职责进行处理
	手势指着和游戏逻辑职责是保持相对独立的,针对于每个职责下的功能都保持的单一职责,手势的左右上下职责,
	只是手势的职责。并不会改变游戏的逻辑职责。就像手势上的职责会去调用游戏逻辑里面的变形职责,
	但是并不会改变变形职责的处理,同理任何手势职责都可以调用变形职责,但是却改变不了变形职责的实现能力

           

开放-封闭原则

开放-封闭原则:对于软件实体(类,模块,函数等等)应该可以扩展,但是不可修改
	开闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,
	可复用,灵活性好。开发人员应该进队程序中呈现出频繁变化的那些部分作出抽象,然而,对于应用程序中的每个部分
	都可以进行抽象同样不是一个好主意,拒绝不成熟的抽象和抽象本身一样重要。
	例子:计算器的加减乘除
	在设计计算器的时候就会有加减乘除等方法的实现,但是也可能会有其他方法的(次方,开方),但是逻辑是不会变,
	输入一个数字,针对于这个数字进行一些计算的操作。
	所以在程序设计的时候就要对方法进行可扩展性,在定义的时候可以针对计算设计一个接口。数字和计算这两个过程
	是不变的,变化的是数字本身和计算的方式而已
	那么在设计的时候就可以设计一个具有计算方法的接口,加减乘除等其他计算方式去实现这个接口,就能够达到开放关闭原则了
           

依赖颠倒原则

依赖颠倒原则:就是针对接口编程,不要针对实现编程
        A、高层模块不应该依赖低层模块,两者都应该依赖抽象
        B、抽象不应该依赖细节,细节应该依赖抽象
       依赖倒转其实可以说是面向对象设计的标志,如果边写时都是考虑针对抽象编程而不是针对于细节编程,
       即程序中所有的依赖关系都是终止于抽象或者接口,那就是面向对象设计,反之则是过程化的设计。
       例子:电脑的各个硬件
       每个电脑硬件的功能实现都是针对于接口进行实现,所以当部分硬件工作出问题的时候,其他硬件也是可以正常
       运行的。处理的时候对于出现问题的硬件进行更换或维修就行了

           

里氏替换原则

里氏替换原则: 子类型必须能够替换父类型
    一个软件实体如果使用的是一个父类的话,那么就一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。
    也就是说:在软件里面,把父类替换成它的子类,程序行为是没有
    变化的,只有当子类能够替换父类的时候,软件单位的功能不受影响是,父类才能够真正的复用,而子类也能够在父类
    的基础上增加新的行为。也正是由于子类型的可替换性才使得
    父类型的模块在无需修改的情况下就可以扩展
    例子:猫(子类)是一种动物(父类)
    动物(父类)可以吃,喝,跑,叫等功能,猫(子类)集成父类的所有功能,并且可以增加新的功能(爬树)。
    所以说猫(子类)可以完全替换父类的功能并且还能够扩展新的功能

           

迪米特法则

迪米特法则:也叫最少知识法则(根本思想:强调了类之间的松耦合)
        如果两个雷不必彼此直接通讯,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类
        的某一个方法的话,可以通过第三者转发这个调用
        迪米特法则首先强调的前提是在这个类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说这个类
        包装好自己的private状态,不需要让别的类知道的字段和行为
        就不要公开
        类之间的耦合越弱,越有利于复用,一个出来弱耦合的类被修改,不会对有关系的类造成波及,也就是说:信息的
        隐藏促进的软件的复用

        例子:一个朋友说他今天过生日喊你去吃饭。你不需要知道去的有哪些人,只需要知道去哪里做什么就行了,
        其他的事情不需要知道,告诉你也太大的用处,反而会增加你的思考
        时间和处理的能力

           

接口隔离原则

不是太懂,大致的意思是使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

           

继续阅读