《大话设计模式》笔记
《大话设计模式》,程杰著,清华大学出版社
(还有类图,不过现在没办法上传,先这样吧)
设计模式
简单工厂模式
简单工厂模式(Simple Factory):工厂类包含必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
策略模式
策略模式(Strategy):定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户
装饰模式
装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活
代理模式
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问
工厂方法模式
工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类
原型模式
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
注意浅表复制与深表复制
模板方法模式
模板方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
设计原则
单一职责原则
单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因
ASD:就一个类而言,应该仅有一个引起它变化的原因
开放-封闭原则
开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改
ASD:对于扩展是开放的(Open for extension);对于更改是封闭的(Closed for modification)
依赖倒转原则
高层模块不应该依赖低层模块。两个都应该依赖抽象
抽象不应该依赖细节。细节应该依赖抽象
针对接口编程,不要针对实现编程
里氏代换原则
里氏代换原则(LSP):子类型必须能够替换掉它们的父类型
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它觉察不出父类对象和子类对象的区别
所以,“正方形”不是(is-a)“矩形”,“企鹅”不是(is-a)“鸟”