新闻资讯
看你所看,想你所想

《设计模式之禅(第2版)》_读书笔记_1600字

《设计模式之禅(第2版)》_读书笔记1600字

设计模式是程序员很好的工具,代码有了好的设计才能很好的适应变化。结构化编程关联的功能松散,不相关的功能耦和过重,改动不仅较大而且很容易影响已经服役的代码。大师们设计了6大原则和23种模式来封装变化,单一职责原则:只有一个原因引起类的变化。里氏转换原则:使用父类的地方都可以使用子类替代。依赖倒置原则:面向接口编程。接口隔离原则:接口尽可能小。迪米特法则:对外暴露越少越好,高内聚低耦合。开闭原则:对增删开放,对修改关闭。 创建类模式6种:单例,原型,工厂,抽象工厂,建造者,迭代器。行为类模式10种:责任链,命令,解释器,中介,备忘录,观察者,状态,策略,模板,访问。结构类模式7种:适配,桥梁,组合,装饰,门面,享元,代理。单例:类只有一个对象,类的全局访问点,每次实例化都返回同一个对象。工厂:在简单工厂的基础上,子类重载父类,改写父类工厂方法。用于工厂对外方法不一致情况。抽象工厂:并行的多个工厂,使用多个不同的产品。工厂是串行的,抽象工厂是并行的,如果一个工厂使用了多个不同产品则不能再用工厂模式。所谓工厂并不一定要返回类的实例,也有可能是使用一个类。建造者模式:类似于模板模式和工厂模式,模版只需要子类重载相应步骤,建造者需要多个子建造者;工厂生产产品,建造者根据已有产品零部件,使用不同的建造顺序和步骤建造产品。迭代器模式:python只要对象实现了__iter__方法,这个对象就是可迭代的。一个函数yield异步执行,这个函数也是可迭代的。^_^$责任链模式:一组有优先级的对象处理请求,将发起请求者与请求处理解耦。举个例子,npc先处理完成的任务,再处理未完成任务,最后处理接取任务。npc处理任务,然后几个状态的任务组成一个优先级队列,请求在这个队列里传递,直到请求被处理。命令模式:把调用命令和命令执行解耦,中间的命令可以实现队列,回滚等操作。解释器模式:解释语言中的句子。如算数表达式,正则匹配的字符串解析等,一般包含循环和递归。中介者模式:把蛛网结构变成星型模式。mvc的c就是一个中介。备忘录模式:状态创建备份,通过备份管理器获取备份的状态。程序编码的后悔药,可以创建和回到检查点。观察者:这种模式已经被用烂了,观察者bind和detach观察事件,观察对象trigger事件。所有绑定和触发都来自观察对象,观察者只处理观察事件。状态模式:状态改变行为,可以通过切换状态使用其他状态,一个状态对应多个其他状态。与策略模式区别,可以切换状态,切换以后可以调用其他状态。与责任链区别,可以一对多。游戏ai有两种实现方式:状态机和行为树。状态机可以考虑用状态模式。策略模式:给客户赋值状态,使用状态处理请求,来代替客户通过条件判断用哪个状态处理请求。模版模式:举个最简单例子,打包分收集引擎,收集包体,打包和发布几个步骤,苹果和安卓一样,所以只需要改写继承的相应步骤,总体流程不变。访问者模式:对象接受一个访问者访问自己,访问者内部计算要访问的数据。可用于同一个容器不同数据类型的访问。这种情况迭代器已经不再适用。对象可以有多个访问者,从多维度访问。^_^$适配器模式:把已经服役的接口改成新需要的接口。比如把获取外包人员信息的rmi接口转换成自己公司人员的接口。桥梁模式:针对继承缺点而提出的设计模式。子类不想继承父类的某个方法。父类可以把这个方法放到其他类中,保存其他类的引用来使用这个方法。这样子类就不会强制继承该方法了。组合模式:树形结构中分支和叶子具有一样的结构。装饰模式:不通过继承来增加额外功能,而是通过层层装饰添加功能。用于继承关系大于2的时候。装饰类和被装饰类不会相互耦合。python的装饰器本身就是装饰模式。门面模式:婚庆筹备,家里装修都是门面模式,门面类通过组合子系统,暴露更少的接口给客户端。享元模式:使用对象池解决大量或者反复创建对象的情况。代理模式:代理和目标对象有相同接口,代理保存对目标对象的引用,从而实现访问控制。如果脚本用到引擎接口可以考虑用代理封装。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com