这是雷总20多年前写的汇编程序,像诗一样优雅

而中国诗词讲究平仄、押韵、对仗等一系列的规则原则,

那么想要写出像诗一样优雅的程序你不得不知的 -- 设计模式之七大原则:

1.开闭原则:对修改关闭,对扩展开放。

2.单一职责原则:每个类、方法只负责一个职责或功能。

3.接口隔离原则:接口设计要精简单一。

4.里氏替换原则:子类可以扩展父类的功能,尽量不修改父类原有的功能。

5.依赖倒置原则:高层不依赖底层,两者都该依赖接口。(面向接口编程)

6.迪米特法则:也称最少知道原则;只和你的朋友说话,不与陌生人说话。

7.合成复用原则:尽量先使用组合或聚合实现关联关系,其次在考虑使用继承关系

开闭原则

一天小A开发了某项功能经过测试并上线。但有一天这项功能需要进行升级,此时小A 已离职,接管小A 的小B 不是在小A的源码上进行扩展,而是直接拿源码进行修改,造成了测试需要重新测试原来已上线的功能。这样不仅使生产效率降低,而且还降低了系统稳定性;当软件需要变化时,尽量通过扩展软件来实现变化,而不是通过修改已有的代码来实现变化。(祖传代码不能动)

单一职责原则

5人组装一台电脑主机步骤一:将主板安装到机箱上。步骤二:将CPU安装到主板并加上CPU风扇。步骤三:将内存条、显卡、硬盘安装到主板上。步骤四:将电源安装到机箱上并接入CPU、主板、显卡。步骤五:电源线整理并封箱。前置条件:5人不会组装电脑。岗前培训:此时领导培训该五位新人,讲解如何完整的组装一台电脑,但5位新人并没有完全吸收领导所讲解的。

实操:5人单人作业 pk 5人流水作业

5人单人作业:每人负责完整的组装步骤,由于缺少实操,在每个步骤上都卡壳,领导也只能给每一位新人逐步解答。

5人流水作业:每人只负责一个步骤,即使5人不会完整的组装电脑,但相对单人作业模式会减少许多问题。

把每人人比作类来看,即可得出 每个类、方法只负责一个职责或功能从而降低类或方法的复杂度。从而提高程序的可读取性。

接口隔离原则

某笔记本电脑需要两个type-c插槽,一个既能充电又能传输数据,另一个仅数据传输;

此时定义一个type-c接口:

interface TypeC {    //数据传输    public function data();    //充电    public function charge();}

具有实现类:

//typc1class TypeC1 implements TypeC{    public function data(){       echo "实现数据传输";    }    public function charge(){        echo "实现充电";    }}//typc2class TypeC2 implements TypeC{    public function data(){       echo "实现数据传输";    }    public function charge(){       throw new \Exception("我可能会爆炸");    }}

此时TypeC2并不需要实现充电接口。

将其修改之:

interface Charge{    //充电    public function charge();}interface TypeC {    //数据传输    public function data();}

具体实现类:

class TypeC1 implements TypeC,Charge{    public function data(){        echo "实现数据传输";    }    public function charge(){        echo "实现充电";    }}class TypeC2 implements TypeC{    public function data(){        echo "实现数据传输";    }}

充电接口单独提取出来,需要实现充电接口的Type-c去实现.其客户端不应该依赖它不需要的接口,这就是接口隔离原则。


接口隔离原则_设计模式之七大设计原则(上)相关推荐

  1. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

    文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...

  2. 设计模式的七大设计原则:其二:接口隔离原则

    接口隔离原则: 基本介绍: 1.客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上 2.先看一张图 3.类A通过Interface1依赖类B,类C通过接口Interface ...

  3. 代码规范七大原则_设计模式的七大原则详解||上篇

    Hello 丨World  当机会变得稀有,当竞争变得激烈 当方向不再清晰,当风口不再有风 关键词||设计模式 全文约7685字,细读大约需要20分钟 1 认识设计模式 1.1 什么是设计模式 所谓设 ...

  4. Java设计模式--------面向对象七大设计原则

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单一职责原则 二.开闭原则 三.接口隔离原则 什么是接口隔离原则 接口隔离原则分析 四.里氏替换原则 继承 为什么 ...

  5. 设计模式的七大设计原则:其七:合成复用原则

    合成复用原则(Composite Reuse Principle) 基本介绍: 原则是尽量使用合成/聚合的方式,而不是使用继承. 设计原则核心思想: 1.找出应用中可能需要变化之处,把它们独立出来,不 ...

  6. 设计模式的七大设计原则:其三:依赖倒转原则

    依赖倒转原则: 基本介绍: 依赖倒转原则(Dependence Inversion Principle)是指: 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象 2.抽象不应该依赖细节,细节应该依 ...

  7. 设计模式的七大设计原则:其五:开闭原则

    开闭原则: 基本介绍: 1.开闭原则(Open Closed Principle)是编程中最基础,最重要的原则. 2.一个软件实体如类,模块和函数应该对扩展开饭,对修改关闭.用抽象构建框架,用实现扩展 ...

  8. 设计模式的七大设计原则:其六:迪米特法则

    迪米特法则: 基本介绍: 1.一个对象应该对其他对象保持最少的了解 2.类与类关系越密切,耦合度越大 3.迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的 ...

  9. 设计模式的七大设计原则:其四:里氏替换原则

    里氏替换原则: OO中的继承性的思考和说明: 1)继承包含这样一层含义:父类中凡是已经实现好的方法,实际上时在是设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的 ...

最新文章

  1. Android 替换TextView 里面指定的符号
  2. Python3的urllib.parse常用函数小结
  3. MySQL搭建主从复制 读写分离 分库分表 MyCat高可用
  4. 福州大学软工 1715 | K 班 - 启航
  5. C语言 二维数组行数和列数计算 - C语言零基础入门教程
  6. php版谁是卧底,机器人陪你玩“谁是卧底quot;游戏
  7. java开发者工具开源版_6种开源工具可帮助教育工作者保持井井有条
  8. 生成jacoco报告_jacoco生成的覆盖率文件
  9. Flume的安装与使用
  10. Atitit.计算机图形图像图片处理原理与概论attilax总结
  11. Qt通过域名获取IP地址
  12. python声音模拟_5秒钟让python克隆别人的声音
  13. Go Flutter Desktop (二) go 二进制程序打包为 mac app(dmg)
  14. git 清除版本库中的忽略文件
  15. LSD(Line Segment Detector)直线提取算法
  16. CentOS 8.1安装MySQL 8.0详解
  17. android 陀螺仪滤波_Arduino MPU6050陀螺仪运用卡尔曼滤波姿态解算实验
  18. IDEA中 Maven Projects 窗口如何显示
  19. 三角形加几笔能变成什么_一个圆添上几笔能出来什么形状?例如:表,太阳,向日葵.-圆形加几笔得什么事物-数学-伍靖都同学...
  20. 几万创业做什么好_适合小投资者轻资产的创业项目_加油优惠卡

热门文章

  1. Python-第三方库requests详解
  2. javaweb学习总结(三十八)——事务
  3. C#怎么遍历一个对象里面的全部属性?
  4. iBatis.Net(C#)SQL数据映射
  5. SQL SERVER 2005 进行XML查询
  6. Redis与Memcached的比较
  7. nginx整合php+lua+oracle环境搭建
  8. java 切面获取参数_每天分享一点Java知识(spring-aop)
  9. 数据流图软件_软件工程导论知识点梳理之概念题
  10. python向端口发出数据_Python写的简单的端口监听,显示端口上收到的数据,TCP的...