【转载】设计模式_六大原则(学习)
http://www.cnblogs.com/zuoxiaolong/p/pattern1.html
1、 单一职责原则:描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致。
2、里氏替换原则:这个原则表达的意思是一个子类应该可以替换掉父类并且可以正常工作,就是说,子类一般不该重写父类的方法,因为父类的方法一般都是对外公布的接口,是具有不可变性的。
3、接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小。
如果你做不到这一点你经常会发现这样的状况,一个类实现了一个接口,里面很多方法都是空着的,只有个别几个方法实现了。
这样做不仅会强制实现的人不得不实现本来不该实现的方法,最严重的是会给使用者造成假象,即这个实现类拥有接口中所有的行为,结果调用方法时却没收获到想要的结果。
4、依赖倒置原则
实现都是易变的,而只有抽象是稳定的,所以当依赖于抽象时,实现的变化并不会影响客户端的调用。使用接口和抽象类
5、最小知道原则
高内聚就是尽可能将一个类的细节全部写在这个类的内部,不要漏出来给其他类知道,否则其他类就很容易会依赖于这些细节,这样类之间的耦合度就会急速上升,这样做的后果往往是一个类随便改点东西,依赖于它的类全部都要改
6、开-闭原则
对修改关闭,对扩展开放。
转载于:https://www.cnblogs.com/lwcoding/p/6767266.html
【转载】设计模式_六大原则(学习)相关推荐
- 神了!有人用一个项目把23种设计模式与六大原则融会贯通了
前言 设计模式分为三类,创建型,结构型和行为型.创建型比较好理解,它抽象了实例化过程,将系统与实例的创建解耦.实例由专门的工厂来创建,从而使系统针对实例的抽象接口编程,不依赖任何具体的实现.结构型和行 ...
- unity 项目开发——浅谈设计模式的六大原则(一)
目录 前言 首先,六大原则是谁? 其次,为什么需要学习这六大原则? 正文 一.单一职责原则 示例: 因此我们需要进行拆分,根据具体的职能可将其具体拆分如下: Unity 单一职责原则 二.开闭原则 U ...
- 【设计模式 00】设计模式的六大原则
设计模式的六大原则 参考: 设计模式六大原则 1. 单一职责原则 一个类只负责一个明确的功能 优点: 降低类的复杂度,提高代码可读性和可维护性 降低变更时对其他功能的影响 2. 里氏替换原则 **原则 ...
- 如何理解设计模式的六大原则?
我们知道,java中有类,父类,抽象类,接口这些概念,而设计模式的六大原则就解释了它们及其它们之间的关系是怎样的,接下来我们将由简到难一一剖析. 开闭原则:是总纲,他告诉我们要对扩展开放,对修改关闭. ...
- 设计模式的六大原则(SOLID)
设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitution Pr ...
- 设计模式的六大原则。简称:SOLID
设计模式的六大原则.简称:SOLID 迪米特法则(Law of Demeter):如果两个类之间并不需要直接通信,那么就不应该让这两个类相互作用.又叫作最少知识原则 迪米特法则的定义是:只与你的直接朋 ...
- 「设计模式」六大原则之三:里氏替换原则小结
文章目录 1.里式替换原则定义 2. 举例说明 示例1: 示例2: 3. 哪些代码明显违背了 LSP? 子类违背父类声明要实现的功能 子类违背父类对输入.输出.异常的约定 子类违背父类注释中所罗列的任 ...
- (转)设计模式之六大原则
源地址:http://blog.csdn.net/scboyhj__/article/details/47844639 1. 单一职责原则 -Single Responsibility Princip ...
- 【设计模式】——六大原则
◎原则之间的关系◎ 开闭原则是目标,里氏转换原则是基础,依赖倒转原则是手段.六大原则追求的目标都是,可扩展,复用性强,灵活性高,容易维护,耦合度低. ★★单一职责原则★♬★ 定义:就一个类而言,应该仅 ...
最新文章
- Java类文件结构详解
- spring事务管理-演示事务的环境准备
- c语言十六进制转换加H,c语言十六进制和十进制间的转换.docx
- c++中this指针基本概念和使用
- 多个 本地仓库_【运维工具】搭建npm私有镜像仓库,天下苦于npm build久矣
- Linux进程列表巧用,Linux下的进程分析–PS
- 怎么自己打印餐饮小票_自己怎么做餐饮外卖配送系统?可以开发外卖配送系统的公司有哪些?...
- 赛锐信息:SAP ABAP 屏幕导航
- 面试官问:在读多写少的情况下,如何优化 MySQL 的数据查询方案
- 安装python版opencv遇到ModuleNotFoundError: No module named ‘skbuild‘
- matlab的输入输出常见语句
- Python完全平方数
- 【医疗图像分割】Deep neural networks for the detection and segmentation of the retinal fluid in OCT images.
- html动画3d背景图片,jQuery和CSS3全屏3D背景图片视觉差特效
- 个性的留言.html,个性留言经典语录集锦
- 微信小程序函数传参以及获取调用
- 大数据开发超高频面试题!大厂面试必看!包含Hadoop、zookeeper、Hive、flume、kafka、Hbase、flink、spark、数仓等
- mac 完全卸载android,Mac彻底卸载Android Studio
- Gitlab在线安装、离线安装、搭建、使用等详细介绍,不能再详细了……
- java一竖,java 添加一个竖滚动条
热门文章
- C++ const char* 学习
- 初步了解超图两种3D客户端 - iClient3D for_WebGL 和 iClient3D for_Plugin
- 图解 windbg设置符号文件路径和使用入门
- 为什么从前那些.NET开发者都不写单元测试呢?
- Day10-Python3基础-协程、异步IO、redis缓存、rabbitMQ队列
- 《你的误区》《少有人走过的路》下载doc格式
- iOS开发之图片分辨率与像素对齐
- 生成 PDF 全攻略【1】初体验
- 余额宝 vs. P2P网贷,谁更有生命力?
- linux下测试宽带速度