导图社区 《大话设计模式》读书笔记
本书通过故事讲述程序如何设计。希望能给渴望了解面向对象程序设计的初学者及困惑、无法复用的代码编程体验者一些好的建议和提示。本书主要采用C#介绍设计模式中比较常见的23种设计模式,分29章具体介绍,以现实生活中常见的事情为例来具体分析讲解。
李阳疯狂英语口语 - 突破句型,勇敢说出来,英语口语也很简单哦。
李阳疯狂英语口语突破系列突破口语要素,快速突破口语不是梦。
作者是堀田由美(ほったゆみ),漫画由小畑健绘制,并由日本棋院的女棋士梅泽由香里担当监修,单行本全23卷。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
大话设计模式
设计原则
单一职责原则
一个类而言,应该只有一个引起它变化的原因
开闭原则
对扩展开放,对修改关闭
里氏代替原则
子类必须替换掉它们的父类型
依赖倒置原则
面向接口编程
接口隔离原则
使用多个专门的接口比使用单一的总接口要好
合成复用原则
尽量使用合成/聚合,尽量不要使用继承。
要使用好合成复用原则,首先需要区分"Has—A"和“Is—A”的关系。
迪米特法则
一个对象应当对其他对象有尽可能少的了解
创建型模式
创建对象的模式
共同点
将系统使用哪些具体类的信息封装起来
隐藏了这些类的实例是如何被创建和组织的
分类
单例模式
类只有一个实例
通过私有构造函数来保证类外部不能对类进行实例化
提供一个全局访问点
创建一个返回该类对象的静态方法
解决的是实例化对象的个数的问题
实际
操作系统中只能有一个任务管理器
操作文件时,同一时间内只允许一个实例对其操作
简单工厂
优点
解决了客户端直接依赖于具体对象的问题, 客户端可以消除直接创建对象的责任,而仅仅是消费产品
实现了对责任的分割
代码复用
缺点
工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都会受到影响
系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,这样就会造成工厂逻辑过于复杂
应用场景
当工厂类负责创建的对象比较少
客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时
工厂方法
:创建单个对象,在AbstractFactory有使用到。
克服简单工厂模式的缺点
每个具体工厂类只完成单个实例的创建
在现实生活中,一个工厂只创建单个产品这样的例子很少
流程
产品
西红柿炒蛋
土豆肉丝
工厂
西红柿炒蛋工厂
土豆肉丝工厂
添加肉末茄子
肉末茄子
肉末茄子工厂
抽象工厂
创建一系列相互依赖对象,并能在运行时改变系列。
抽象产品
鸭脖
南昌鸭脖
上海鸭脖
鸭架
南昌鸭架
上海鸭架
南昌工厂
上海工厂
调用
新建南昌工厂
制作南昌鸭脖
制作南昌鸭架
新建上海工厂
制作上海鸭脖
制作上海鸭架
添加湖南的分店,只需要添加三个类
湖南鸭脖
湖南鸭架
湖南工厂
抽象工厂模式却可以很好地解决一系列产品创建的问题
抽象工厂对于系列产品的变化支持“开放——封闭”原则
对于添加新产品这种情况就不支持”开放——封闭 “原则
一个系统不要求依赖产品类实例如何被创建、组合和表达的表达,这点也是所有工厂模式应用的前提。
这个系统有多个系列产品,而系统中只消费其中某一系列产品
系统要求提供一个产品类的库,所有产品以同样的接口出现,客户端不需要依赖具体实现。
原型模式:通过拷贝原型来创建新的对象。
原型模式向客户隐藏了创建新实例的复杂性
原型模式允许动态增加或较少产品类。
原型模式简化了实例的创建结构,工厂方法模式需要有一个与产品类等级结构相同的等级结构,而原型模式不需要这样。
产品类不
行为模式
备忘录模式
策略模式
迭代器设计模式
访问者模式
观察者模式
规格模式
解释器模式
命令模式
模版模式
责任链模式
中介模式
状态模式
结构模式
代理模式
共享模式
桥接模式
适配器模式
外观模式
装饰模式
组合模式