大话设计模式读书笔记--5个原则

单一职责原则

定义:

就一个类而言,应该仅有一个引起它变化的原因

如果你能想到多余一个的动机去改变一个类,那么这个类就具有对于一个的职责,就应该考虑类的职责分离

职责过多的坏处

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其它职责的变化,这些耦合会导致脆弱的设计,当发生变化时,设计会遭受意想不到的破坏

开发中

软件设计的重要部分,就是发现职责,并把职责相互分离

开放封闭原则

定义:

软件实体(类,函数,模块等),应该可以扩展,但是不可以修改

面对需求的变化,对程序的改动是通过增加新代码,而不是修改现有代码

何时应对变化

在编写代码时,假设变化不会发生,或者猜测可能发生的变化种类,当然猜测很难,因此当发生小变化时,想办法应对更大的变化,有变化立刻采取行动,创建抽象隔离以后发生的同类变化,达到可维护,可扩展,可复用的目的

依赖倒转原则

定义:

1.高层模块不应该依赖于低层模块,两者都依赖于抽象

2.抽象不应该依赖于细节,细节应该依赖于抽象

针对接口编程,不应该针对实现编程

例如: web开发中,业务层(高层)调用dao层(低层)访问数据库

里氏代换原则

定义:

子类型必须能够替换掉它们的父类型

在程序中,把父类型全部替换成子类型,程序的行为没有变化时,父类才能真正的被复用,而子类也能在父类的基础上增加新的行文

例如

生物学中,企鹅是鸟类,但是程序设计中,子类拥有父类所有非private的属性和行为,企鹅不能当做鸟类的子类,因为企鹅不能飞,

迪米特法则

定义:

如果两个类不必直接通信,那么这两个类就不应该发生直接的相互作用,如果一个类需要调用另一个类的方法时,可以通过第三者转发这个调用

强调类之间的耦合,类应当尽量降低成员的的访问权限,信息的隐藏促进了软件的复用

例如

小李第一天去公司上班, 需要找it部门的人安装电脑, 小李找人事, 人事给it部门的小王, 小王很忙没时间,人事又找到小赵, 最后是小赵帮忙安装电脑

由于it部门是抽象的,小李不需要认识it部门的人靠关系获得帮忙,即使it部门的员工换了也没事,小李只需通过人事转发就行了

时间: 2024-12-20 21:43:56

大话设计模式读书笔记--5个原则的相关文章

大话设计模式读书笔记2——策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合. UML 图: 根据<大话设计模式>——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// <summary> /// 现金收费抽象类 /// </summary> public abstract class CashSuper { /// <summary> ///

大话设计模式读书笔记1——简单工厂模式

最近几日,重温了一下<大话设计模式>这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!! 好东西就要记下来!!! 第一章笔记:从一个简单的计算器程序来看简单工厂模式. 变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂. UML图: /// <summary> /// 运算类 /// </summary> public class Operation { public double Number1 { get; set

大话设计模式读书笔记2——单例模式

单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 我们来看一下单例模式下的饿汉模式代码: /// <summary> /// 饿汉模式 /// </summary> public class Singleton { //私有的构造器 private Singleton() {

大话设计模式读书笔记(一)

上周从同事那里搞到一本大话设计模式的书,便看了起来,对于我这种非科班出身的人来说,还是很有用处的.这些设计模式的终极目的都是让代码更好看,更好用,更好拓展,在需求变化的时候,尽可能少的改动代码 先记录自己已经学到的几个部分: 1.开放——封闭原则 软件实体对于拓展的开放的,对于修改时封闭的.及对已经写好的类来说尽力避免修改,可以通过拓展其父类来实现对他的修改.增强可维护性. 2.单一职责原则 就一个类而言,应该只有一个引起它变化的原因 具体而言,如果你能想到多于一个动机去改变一个类,那么这个类就

大话设计模式读书笔记--设计模式总结

前言 大话设计模式看了两遍,之前看过一遍,理解的不深刻, 这次用了一个月多点的时间再次温习,利用下班后的时间回来学习,把学习心得记录下来,加深了对面向对象的理解 之前是看到一个需求搞清楚业务流程之后立刻就去做了,很少从设计层面的角度考虑,现在在开发程序时,开始有了设计的思想,也有了达到可维护,可复用,可扩展目的具体的实现方法 每当看到经过优化代码的效果时,就想起一句话:精彩的代码是如何想出来的,比看到精彩的代码更加令人兴奋 下面是用自己的话进行的总结,以便加深记忆和理解 创建型 抽象工厂 定义:

设计模式(&quot;大话设计模式&quot;读书笔记 C#实现)

前言:毫无疑问 ,学习一些设计模式,对我们的编程水平的提高帮助很大.写这个博客的时候自己刚开始学习设计模式,难免有错,欢迎评论指正. 我学设计模式的第一本书是“大话设计模式”. 1.为什么要学设计模式? 设计模式的存在就是为了抵御需求变更.学会了这些思想,开始一个项目的时候考虑的更多,当用户提出变更的时候项目改动更少. 2.怎么才能学会设计模式? 我不知道,不过轮子哥(vczh)文章中的一句话,我觉得对,就是:“设计模式就是因为情况复杂了所以才会出现的,所以我们只能通过复杂的程序来学习设计模式.

大话设计模式读书笔记--8.外观模式

外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为 生活中的例子: 一个电源总开关可以控制四盏灯.一个风扇.一台空调和一台电视机的启动和关闭.该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计 定义 定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用 结构图 Facade: 是模式的核心,指导所有子系统的功能, 可根据客户端的需求定制功能组合 SubSystemOne: 实现子系统

大话设计模式读书笔记--1.简单工厂模式

定义 专门定义一个类来负责创建其他类的实例, 被创建的类通常具有共同的父类. 它又称为静态工厂模式,属于类的创建型模式 模式类图 将对象的创建和对象本身业务处理分离了,可以降低系统的耦合 工厂模式实现 场景:实现一个计算器, 输入a和b, 计算a+b和a-b 下载代码,解压后目录如下图: 优缺点 当增加一个乘法运算时,需要添加乘法类和修改工厂类创建对象的逻辑,它违反了开闭原则 优点:提供专门的工程类创建对象, 降低系统的耦合 缺点: 添加新产品时,需要修改工厂类, 系统扩展困难 使用场景 1.客

大话设计模式读书笔记4——模版方法模式

模板方法是一种常见的设计模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. UML图: 具体实现代码: namespace TemplateMethod { class Program { static void Main(string[] args) { AbstractClass A = new ConcreteClassA(); A.TemplateMethod(); AbstractClass B = new