文档章节

五大设计原则

AustinYe
 AustinYe
发布于 2017/09/10 18:40
字数 1013
阅读 3
收藏 0

单一职责模式

    如果一个类的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。
    软件设计真正要做得许多内容,就是发现职责并把这些职责相互分离
    如何判断?如果你能够想到多余一个的动机去改变一个类,那么这个类就具有多于一个的职责

开放封闭原则

     面对需求,对程序的改动是通过增加新代码进行得,而不是更改现有的代码
    软件实体(类、模块、函数等),应该是可以扩展,但是不可修改
        对于扩展是开放的(Open for extension)
        对于更改是封闭的(Closed for modification)
        怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本
    无论模块是多么的‘封闭’,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封装做出选择。他必须先猜测(ps:业务预测,架构及模块设计,也是基于对业务发展得预判上的)出最有可能发生的变化种类,然后构造抽象来隔离那些变化,等到有细微变化时,立即采取行动。(当发生变化时,创建抽象来隔离以后发生的同类变化)

里氏替换原则

        子类型必须能够替换掉他们的父类型
        只有当子类可以替换吊父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

依赖倒转原则

            抽象不应该依赖细节,细节应该依赖抽象(面向抽象(接口)编程,不要面向实现编程)
            程序中所有的依赖关系都是终止于抽象类或者接口,      

迪米特法则

    迪米特法则也称最少知识原则,一个对象应该对其它对象有最少的了解。通俗也说:一个类应该对自己需要耦合或调用的类知道得最少

    隐藏内部实现及细节

       迪米特法则的做法观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高,其要求的结果就是产生了大量的中转或跳转类,导致的复杂性提高,同时也为维护带来了难度,所以在采用迪米特法则时需要反复权衡,既做到让结构清晰,又做到高内聚低耦合。

      但是过度使用迪米特法则,也会造成系统的不同模块之间的通信效率降低,使系统的不同模块之间不容易协调等缺点。同时,因为迪米特法则要求类与类之间尽量不直接通信,如果类之间需要通信就通过第三方转发的方式,这就直接导致了系统中存在大量的中介类,这些类存在的唯一原因是为了传递类与类之间的相互调用关系,这就毫无疑问的增加了系统的复杂度。解决这个问题的方式是:使用依赖倒转原则(通俗的讲就是要针对接口编程,不要针对具体编程), 这要就可以是调用方和被调用方之间有了一个抽象层,被调用方在遵循抽象层的前提下就可以自由的变化,此时抽象层成了调用方的朋友。

© 著作权归作者所有

共有 人打赏支持
AustinYe
粉丝 0
博文 13
码字总数 7991
作品 0
深圳
私信 提问
《深入理解JavaScript系列》系列技术文章整理收藏

《深入理解JavaScript系列》系列技术文章整理收藏 深入理解JavaScript系列来自汤姆大叔的整理贴,原文地址http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 此处收藏供JavaScr...

开元中国2015
2015/06/22
202
3
设计模式之禅之六大设计原则-开闭原则

开闭原则 一:开闭原则的定义 --->一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 --->我们做一件事情,或者选择一个方向,一般需要经历三个步骤:What——是什么,Why——为什么,Ho...

无信不立
2015/12/24
0
0
主流编程语言的对比分析

最近做Android和IOS项目,由资深windows平台C++开发转型做移动平台,涉及到C++、Java、ObjectC三类语言的对比,本文将从面向对象语言三大特性&五大原则角度对比分析,总结沉淀下来(N年前做J...

筱骏
2016/12/28
0
0
面向对象 三大特性 五大基本原则

以前一直认为程序中的类有使用到封装,继承,多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就...

度_
10/14
0
0
PHP核心技术与最佳实践 读书笔记 第二章 面向对象的设计原则

第二章 面向对象的设计原则 2.1 面向对象设计的五大原则 单一职责原则 接口隔离原则 开放-封闭原则 替换原则 依赖倒置原则 2.1.1 单一职责原则SRP 单一职责有两个含义:一个是避免相同的职责...

lilugirl
2014/03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
22分钟前
1
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
52分钟前
2
0
SpringBoot 整合异步调用方法

1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能 package com.codingos.springbootdemo;import org.springframework.boot.SpringApplication;import org.springfra......

北漂的我
今天
1
0
0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
今天
3
0
边缘计算与数据中心的发展趋势

导读 Gartner研究表明,人工智能、物联网和5G助力下一代商业创新,由此产生大量数据,2020年前企业将使用超过75亿台联网设备。 在几乎每个方面,社会的节奏都正变得更快。我们希望客户服务问...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部