![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HeadFirst 设计模式读书笔记
moonshinesonmyway
这个作者很懒,什么都没留下…
展开
-
Headfirst java设计模式-适配器模式
适配器模式:将一个类的接口,转换为客户期望的另一个类的接口。适配器让原本不兼容的类可以合作无间。 适配器分为两种: 1.对象适配器:采用组合的方式,将请求传送给被适配者。 2.类适配器:继承被适配者和目标类。适配器和外观模式都可以针对多个类,他们的区别在于意图不同,适配器的意图在于改变接口符合客户需要,而外观模式的意图是提供子系统的一个简化接口。1.对象适配器:采用组合的方式,将请求...原创 2018-07-31 14:14:01 · 397 阅读 · 0 评论 -
Headfirst java设计模式-观察者模式
观察者模式:在状态之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象会都收到通知,并改变状态。代码实现: 1.采用自定义的observer和observerable接口 (1)创建subject和observer两个接口,以及布告板接口public interface Observer { public void update(float temp, float ...原创 2018-08-02 20:46:52 · 284 阅读 · 0 评论 -
Headfirst java设计模式-模板方法模式
模板方法模式:在一个方法中定义一个算法的骨架,而将一个步骤延迟到子类中。模板方法可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤。代码实现: (1)创建一个CaffineBeverage抽象类,并声明两个抽象方法供子类实现。public abstract class CaffineBeverage { final void prepareRecipe(){ ...原创 2018-08-02 20:10:10 · 193 阅读 · 0 评论 -
Headfirst java设计模式-工厂模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不许要明确指定具体类。代码实现: 1.简单工厂(严格上非工厂模式) (1)创建一个pizza抽象类public abstract class Pizza { public abstract void prep...原创 2018-08-02 15:03:15 · 645 阅读 · 0 评论 -
Headfirst java设计模式-外观模式
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。原创 2018-08-06 14:58:10 · 261 阅读 · 0 评论 -
Headfirst java设计模式-装饰者模式
装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。代码实现: (1)先声明Beverage和CondimentDecorator两个抽象类public abstract class Beverage { String description = "Unknow Beverage"; public String getDes...原创 2018-08-02 13:57:44 · 235 阅读 · 0 评论 -
Headfirst java设计模式-组合模式
组合模式:允许将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。相关代码实现: (1)实现一个MenuComponent抽象类import java.util.Iterator;public abstract class MenuComponent { public void add(MenuComponent menuC...原创 2018-08-01 17:34:02 · 250 阅读 · 0 评论 -
Headfirst java设计模式-状态模式
状态模式:封装基于状态的行为,并将行为委托到当前状态。代码实现: (1)定义一个糖果机状态接口public interface State { /** * insert quarter */ void insertQuarter(); /** * eject quarter */ void ejectQuarter...原创 2018-08-06 11:00:40 · 324 阅读 · 0 评论 -
Headfirst java设计模式-策略模式
策略模式:定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。代码实现: (1)定义两个算法族(策略)的接口public interface FlyBehavior { void fly();}public interface QuackBehavior { void quack();}(2)定义一个接口,采用组合的方式调...原创 2018-08-06 10:25:17 · 338 阅读 · 0 评论 -
Headfirst java设计模式-单例模式
单例(件)模式:确保一个类只有一个实例,并提供一个全局访问点。代码实现: 1.懒汉式/** * 通过延迟实例化实现的单例模式 * 使用synchronized处理多线程访问,但是性能较差。 * @author zhangzhilin * */public class LazyInstantiazeSingleton { public static LazyInstan...原创 2018-08-06 09:46:31 · 194 阅读 · 0 评论 -
Headfirst java设计模式-迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部表示。代码实现: (1)先定义一个menu接口 public interface Menu { public Iterator createIterator(); }(2)定义一个MenuItem类,用于存储menu相关的信息 public class MenuItem { Stri...原创 2018-07-31 17:11:11 · 259 阅读 · 0 评论 -
Headfirst java设计模式-命令模式
命令模式:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 简而言之:命令模式就是将方法调用封装起来。相关代码: (1)先定义一个command接口: public interface Command { public void execute(); }(2)定义一个Light类作为command执行者(receiver) ...原创 2018-07-31 16:00:15 · 259 阅读 · 0 评论 -
Headfirst java设计模式-代理模式
代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 代理控制访问的方式: 1.远程代理控制访问远程对象。 2.虚拟代理控制访问创建开销大的资源。 3.保护代理基于权限控制对资源的访问。代码实现:...原创 2018-08-06 17:31:40 · 318 阅读 · 0 评论