HEAD FIRST设计模式
HEAD FIRST设计模式读书笔记
未羊_z
这个作者很懒,什么都没留下…
展开
-
HEAD FIRST设计模式-工厂模式
简单工厂模式定义创建一个工厂类,用于负责处理创建对象的细节。这样做的有点是当需要变更的时候只需要修改该类的代码就可以,其他地方不需要改动。原创 2020-05-16 23:29:41 · 87 阅读 · 0 评论 -
HEAD FIRST设计模式-适配器模式
定义适配器模式将一个类的接口转换成客户期望的另外一个接口。适配器让原本接口不兼容的类兼容。适配器的工作像是一个中间人,将客户发出的请求转换成厂商类能理解的请求。工作原理使用适配器的过程如下:通过目标接口调用适配器方法对适配器发出请求适配器使用被适配者接口把请求转换成被适配者的一个或者多个接口。客户接收到调用结果,但并未觉察到这一切是适配器在起转换作用。...原创 2020-05-16 23:24:22 · 152 阅读 · 0 评论 -
HEAD FIRST设计模式-单件模式
定义单件模式确保一个类只有一个实例,并提供一个全局访问点。利用静态变量来记录唯一的一个实例。把构造器私有化定义一个方法返回实例单件模式需要注意多线程的问题。可以使用锁或者在程序创建过程中就实例化该类。也可以使用双重检查加锁。...原创 2020-05-16 23:21:51 · 97 阅读 · 0 评论 -
HEAD FIRST设计模式-命令模式
定义将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销的操作。优点命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间通过命令对象进行沟通,命令对象封装了接收者的一个或者一组动作。一个命令对象通过在特定的接收者上绑定一组动作来封装一个请求。命令对象将动作和接收者包进对象中,这个对象只暴露一个execute()方法。python代码如下from abc import abstractmethodfrom enum import Enumcla原创 2020-05-16 23:18:33 · 158 阅读 · 0 评论 -
HEAD FIRST设计模式-外观模式
定义外观模式提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。优点外观模式通过实现一个提供更合理接口的外观类,可以将一个复杂的子系统变得更容易使用。外观模式只提供简化的接口,我们依然可以使用子系统的类。符合最少知识原则,不要让太多的类耦合在一起,免得修改系统中的一部分,会影响其他部分。类图Python代码实现...原创 2020-05-11 08:13:05 · 79 阅读 · 0 评论 -
HEAD FIRST设计模式-模板方法
定义模板方法模式在一个方法中定义算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的步骤。模板方法定义了一个算法的步骤,允许子类 为一个或者多个步骤提供实现。钩子函数是一种声明在抽象类中的方法,但只有空的或者默认的实现,钩子的存在,可以让子类有能力对算法的不同点进行挂钩,可以不同的行为。优点类图python编程实现from abc import abstractmethodclass CaffeineBeverage: def _原创 2020-05-11 08:10:42 · 150 阅读 · 0 评论 -
HEAD FIRST设计模式-状态模式
定义状态模式:允许对象在内部状态改变时改变他的行为,对象看起来好像修改了它的类。状态模式的实现方法是,定义一个state接口,在这个接口中,机器的每一个动作都对应一个方法。为机器的每个状态实现状态类,这些类负责在对应的状态下进行机器的行为。优点类图类图python代码实现from abc import abstractmethodimport randomclass State: def __init__(self,gumball_machine): self原创 2020-05-11 08:06:54 · 134 阅读 · 0 评论 -
HEAD FIRST设计模式-代理模式
定义代理模式为另一个对象提供一个替身或者占位符控制对这个对象的访问。优点使用代理模式创建代表对象,让代表对象控制某个对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或者需要安全控制的对象。类图...原创 2020-05-11 08:00:14 · 156 阅读 · 0 评论 -
HEAD FIRST设计模式-策略模式
定义策略模式定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。优点多用组合少用继承,使用组合建立的系统具有很大的弹性,不仅可以将算法封装成类,更可以在运行时动态的改变行为。策略模式就是践行这个准则的例子。通过将行为或者算法实现为接口,在类中使用接口而不用关心具体的具体的实现从而使模块代码解耦。类图python代码实现from abc import abstractmethodclass FlyBehavior: @abstractmeth原创 2020-05-11 07:56:44 · 188 阅读 · 1 评论 -
HEAD FIRST设计模式-装饰者
定义装饰者动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。优点类应该对扩展开放,对修改关闭。我们的目标是允许类容易扩展,在不修改代码的情况下,就可以搭配新的行为。这样的设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。装饰者和被装饰者有相同的超类型。可以用一个或者多个装饰者包装一个对象。因为装饰者和被装饰者拥有相同的超类型,所有在任何需要原始对象(被包装对象)的场合,可以用装饰过的对象替代。装饰者可以在所委托的被装饰者行为之前或者之后加上自己的行为,达到原创 2020-05-11 07:49:03 · 123 阅读 · 0 评论 -
HEAD FIRST设计模式-观察者
定义观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象的状态改变的时候,他的所有依赖者都可以接受到通知并自动更新。优点关于观察者的一切,主题只知道观察者实现了某个接口。主题不需要知道观察者具体是谁,做了什么或者其他任何细节。这样主题和观察者之间是松耦合的。类图python编程实现from abc import abstractmethodclass Observer: # 观察者接口 @abstractmethod def update(temp,pres原创 2020-05-10 23:07:43 · 98 阅读 · 0 评论