文档章节

五大设计原则

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
PHP核心技术与最佳实践 读书笔记 第二章 面向对象的设计原则

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

lilugirl
2014/03/25
0
0
【每周一本书】之《消费金融真经》:个人贷款业务全流程指南

【数据猿导读】 “数据驱动”是贯穿本书的核心理念,“五大原则”是管理消费金融业务的精髓 编辑 | abby 官网 | www.datayuan.cn 微信公众号ID | datayuancn 金融的本质是不同主体之间通过价...

ympzuelx3aiap7q
2017/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO与BIO的区别、NIO的运行原理和并发使用场景

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的...

Java干货分享
38分钟前
1
0
Makefile 学习 1 - 基于若干 Blog 的汇总

基于若干 Blog 汇总的 makefile 教程 陈皓 https://blog.csdn.net/haoel/article/details/2886 Makefile 基础知识 1. 什么是 Makefile? 规定软件工程的编译规则。一个工程中的源文件,其按类...

公孙衍
51分钟前
1
0
72.告警系统邮件引擎 运行告警系统

20.23/20.24/20.25 告警系统邮件引擎 20.26 运行告警系统 20.23/20.24/20.25 告警系统邮件引擎 邮件首先要有一个mail.py,以下。 因为我们之前zabbix的时候做过,就可以直接拷贝过来 mail.s...

王鑫linux
今天
1
0
09-利用思维导图梳理JavaSE-

09-利用思维导图梳理JavaSE-Java IO流 主要内容 1.Java IO概述 1.1.定义 1.2.输入流 - InputStream 1.3.输出流 - OutputStream 1.4.IO流的分类 1.5.字符流和字节流 2.InputStream类 2.1.File...

飞鱼说编程
今天
3
0
Spring Cloud 微服务的那点事

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开...

我是你大哥
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部