开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:1871

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 586|回复: 4

[再来一次] 设计模式从零到一 之六大原则

[复制链接]  [移动端链接]
排名
1822
昨日变化
1

31

主题

278

帖子

1347

积分

Rank: 9Rank: 9Rank: 9

UID
41125
好友
5
蛮牛币
5968
威望
0
注册时间
2014-8-21
在线时间
446 小时
最后登录
2017-9-13

专栏作家

QQ
发表于 2017-1-12 15:39:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
    一、单一职责原则(Single Responsibility Principe)简称是SRP。
     单一职责原则的好处:
     1、类的复杂性降低,实现什么职责都有清晰明确的定义;
     2、可读性提高,复杂性降低,那当然可读性就提高了;
     3、可维护性提高,可读性提高,那当然就更容易维护了;
     4、变更引起的危险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性,维护性都有非常大的帮助。
     单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可 度量的,因项目而异、因环境而异;

    二、里氏替换原则(Liskov Substitution Principle )简称LSP:
    定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。通俗点讲,就是只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行,有子类出现的地方,父类未必就能适应。
   里氏替换原则的好处:
   1、代码共享、减少创建类的工作量,每个子类都拥有父类的方法和属性;
   2、提高代码的重用性;
   3、子类可以类似父类,但又异于父类;
   4、提高代码的扩展性;
   5、提高产品或项目的开放性;
   缺点:
   1、继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;
   2、降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;
   3、增加了耦合性。当父类的变量、常量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,珍重修改可能带来非常糟糕的结果——大片的代码需要重构。

    三、依赖倒置原则(Dependence Inversion Principle)简称:DIP:
    定义:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;接口或抽象类不依赖实现类,但实现类依赖于接口或抽象类。
    依赖倒置原则的优点:
    1、可以减少类之间的耦合性;
    2、提高系统的稳定性;
    3、降低并行开发引起的风险;
    4、提高代码的可读性和可维护性;
如何写:
   1、每个类尽量都有接口或者抽象类,或者接口和抽象类两者都具备
   2、变量的表面类型尽量是接口或者抽象类
   3、任何类都不应该从具体类派生
   4、尽量不要覆写基类的方法
   5、结合里氏替换原则使用

四、接口隔离原则(Interface Segregation Principle)简称:ISP
   定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
   接口隔离原则的优点:
    1、原则意义上的好处:接口如果能够保持粒度够小,就能保证它足够稳定。
   2、使用多个专门的接口还能够体现对象的层次,因为我们可以通过接口的继承,实现对总接口的定义。
   接口隔离原则是对接口进行规范约束 ,主要包含以下4层意思:接口要尽量小、接口要高内聚、定制服务、接口设计是有限度的。

五 、迪米特法则(Law Of Demeter)也称为最少知识法则(Least Konwledge Principle) 简称:LKP
    定义:一个对象应该对其他对象有最少的了解。通俗的来讲,一个类应该对自己需要耦合或调用的类知道的最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多Public方法,我就调用这么多,其他的我一概不管。
    迪米特法则的优点:类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。
    缺点:产生大量的中转或者跳转类,导致系统的复杂性提高,增加了维护难度。

六、开闭原则(Open Closed Principle)简称:OCP
     开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。
   开闭原则的优点:
   1、提高复用性
   2、提高可维护性
   3、面向对象开发的要求

好了,这一章就写到这,欢迎大家加入QQ群:280993838 。


回复

使用道具 举报

2初来乍到
132/150
排名
27751
昨日变化
18

0

主题

52

帖子

132

积分

Rank: 2Rank: 2

UID
199512
好友
4
蛮牛币
96
威望
0
注册时间
2017-1-6
在线时间
72 小时
最后登录
2017-9-5
发表于 2017-1-12 15:56:21 | 显示全部楼层
lihai a   niuniuniu
[发帖际遇]: aipei1025 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1154/1500
排名
1792
昨日变化
1

1

主题

84

帖子

1154

积分

Rank: 6Rank: 6Rank: 6

UID
112848
好友
0
蛮牛币
3906
威望
0
注册时间
2015-7-9
在线时间
483 小时
最后登录
2017-5-12
发表于 2017-1-17 16:48:59 | 显示全部楼层
6666666666666666

回复 支持 反对

使用道具 举报

4四处流浪
332/500
排名
7496
昨日变化
1

2

主题

114

帖子

332

积分

Rank: 4

UID
131971
好友
4
蛮牛币
1621
威望
0
注册时间
2015-12-17
在线时间
84 小时
最后登录
2017-3-28
发表于 2017-3-3 10:44:32 | 显示全部楼层
对我有大用啊,感谢

回复 支持 反对

使用道具 举报

5熟悉之中
865/1000
排名
2820
昨日变化

3

主题

166

帖子

865

积分

Rank: 5Rank: 5

UID
51046
好友
2
蛮牛币
1555
威望
0
注册时间
2014-10-25
在线时间
298 小时
最后登录
2017-9-20
发表于 2017-3-8 17:05:13 | 显示全部楼层
666666666666666666666666666666666

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表