抽象父类只负责实现相应功能不用管具体是哪一个实现。 子类想调用哪一个行为,就new一个新的行为。
这本书简洁易懂地介绍了十多个设计模式,但是由于这是有很多图片的结构比较杂乱的书,理出一套系统的笔记并不容易,所以这里就只是把提到的设计模式大概总结了一下。这本书...
本篇包括8-14章的内容,其中14章的内容我拆成了很多个小点,正好两篇完结这本书的笔记。因为书的后半部分信息量要密集很多,尽管字数不多,这篇内容还是比较难的,耐...
package com.zero.headfirst.command.impl; import com.zero.headfirst.command.Command; import com.zero.headfirst.command.receiver.Light...; import com.zero.headfirst.command.Command; import com.zero.headfirst.command.receiver.Light; public...; import com.zero.headfirst.command.Command; import com.zero.headfirst.command.receiver.Stereo; /**...package com.zero.headfirst.command; import com.zero.headfirst.command.impl.*; import com.zero.headfirst.command.receiver.AirConditioning...; import com.zero.headfirst.command.receiver.Light; import com.zero.headfirst.command.receiver.Stereo
package com.zero.headfirst.decorator; public interface Pancake { /** * 烹饪方法 */ void...package com.zero.headfirst.decorator; /** * 被装饰对象:定义最基本的乞丐版煎饼,啥都没加 */ public class BeggarPancake implements...package com.zero.headfirst.decorator; public abstract class PancakeDecorator implements Pancake {...package com.zero.headfirst.decorator; /** * 鸡蛋装饰器:覆盖cook方法,加入自身的实现,并且调用父类的cook方法,也就是构造函数中 * EggDecorator...package com.zero.headfirst.decorator; /** * 煎饼果子店 */ public class PancakeShop { public static
代码: //Character角色类 import cn.headFirst.strategyMode.weapon.WeaponBehavior; public class Character {...; public interface WeaponBehavior { public void useWeapon(); } //使用宝剑 package cn.headFirst.strategyMode.weapon...@Override public void useWeapon() { System.out.println("使用宝剑攻打"); } } //使用弓箭 package cn.headFirst.strategyMode.weapon...@Override public void useWeapon() { System.out.println("使用弓箭攻打"); } } //使用斧头 package cn.headFirst.strategyMode.weapon...{ @Override public void useWeapon() { System.out.println("使用斧头攻打"); } } //使用匕首 package cn.headFirst.strategyMode.weapon
html5书写javascript html5中书写css样式 Head First Lounge
package com.zero.headfirst.states; /** * 售货机状态接口 */ public interface MachineState { /** *...package com.zero.headfirst.states; /** * 没有硬币状态 */ public class NoCoinState implements MachineState...package com.zero.headfirst.states; /** * 投入硬币后状态 */ public class HasCoinState implements MachineState...package com.zero.headfirst.states; /** * 售出货物状态 */ public class SellingState implements MachineState...handleRequest() { System.out.println("汽水售罄,退回你的硬币"); } } 最后定义我们的自动售货机 package com.zero.headfirst.states
最近看了《HeadFirst 设计模式》这本书,给组内伙伴准备一次分享,把这次分享记录下来,有需要的可以看看。 这本书主要介绍了四人帮23种经典设计模式中的的14种,也是常用的几种。...demo下载地址:https://github.com/wangdachui/HeadFirst 我除了看这本书,在准备PPT和DEMO的时候还参考了网上的一些资料,也列出来,读者可以自行去查看。
nterface com.zero.headfirst.proxy.service.OrderService Entered com.zero.headfirst.proxy.service.OrderServiceImpl-createOder...,with arguments{12927381} 执行结果:生成订单12927381成功 共耗时:2 interface com.zero.headfirst.proxy.service.ProductService...Entered com.zero.headfirst.proxy.service.ProductServiceImpl-getProduct,with arguments{34010234} 执行结果...ProductServiceImpl.class); productProxy.getProduct("2780935782309"); } } 打印结果如下所示 Entered com.zero.headfirst.proxy.service.OrderServiceImpl...EnhancerByCGLIB$$54d983a1-createOder,with arguments{12873051209g} 执行结果:生成订单12873051209g成功 共耗时:14 Entered com.zero.headfirst.proxy.service.ProductServiceImpl
package com.zero.headfirst.chain.support; import java.util.Objects; /** * 抽象处理器:定义了抽象请求处理方法,持有一个抽象处理器的引用...package com.zero.headfirst.chain.support; /** * 永远不解决,返回false */ public class NoSupport extends AbstractSupport...resolve(NumberData numberData) { return false; } } LimitSupport 解决指定范围的请求 package com.zero.headfirst.chain.support...{ return numberData.getNumber() % 2 == 1; } } SpecialSupport 指定数字处理器 package com.zero.headfirst.chain.support...numberData.getNumber().equals(number); } } 最后我们定义一个客户端去组装我们的责任链,将所有的处理器连在一起,并且模拟请求 package com.zero.headfirst.chain.support
/** * Project: com-zero-design-stu * File created at 2019/6/24 19:45 */ package com.zero.headfirst.adapter.objects...默认功能实现 /** * Project: com-zero-design-stu * File created at 2019/6/24 20:02 */ package com.zero.headfirst.adapter.objects...package com.zero.headfirst.adapter.objects; /** * 普通手机通用 接口 ,对应的3.5mm 耳机孔 * @date 2019/6/25 16:28
HeadFirst 核心代码 「定义正常业务类接口」 public interface PhoneInterface { /*** * 更新电话号码 * @param phoneNum...❞ 装饰器模式和代理模式的区别 持有对象方式:代理模式一般是New,装饰器模式则是传入同一接口对象 意图:装饰器模式意在增强方法功能,代理模式意在控制对象的访问(例如代码中增加校验) 动态代理 刚才 HeadFirst...相关代码链接 GitHub地址 兼顾了《HeadFirst》以及《GOF》两本经典书籍中的案例 提供了友好的阅读指导
HeadFirst 核心代码 「定义状态接口,同时封装变化,利用default关键字封装默认方法」 public interface State { /** 投币 **/ default...相关代码链接 GitHub地址:https://github.com/kkzhilu/Kerwin-DesignPattern 兼顾了《HeadFirst》以及《GOF》两本经典书籍中的案例 提供了友好的阅读指导
HeadFirst 核心代码 于是乎,我们开启了关于设计模式的经典书籍阅读之旅 /** * 装饰器模式共同的接口 */ public interface Component { String...装饰器模式UML图 相关代码链接 GitHub地址:https://github.com/kkzhilu/Kerwin-DesignPattern 兼顾了《HeadFirst》以及《GOF》两本经典数据中的案例
HeadFirst 系列丛书的官网为:http://www.headfirstlabs.com/ , 有大概30本书,并且提供了每本书的代码下载,可以跟着书做做练习,不会的再看看源代码示例。
HeadFirst 核心代码 不会的话,只能看书学习啦~ 「父级接口」 public abstract class Factory { /*** * 产品订购方案 */...HeadFirst 核心代码 抽象工厂模式着重点在产品族上,开始撸代码吧~ 「父级抽象类」 public abstract class AbstractFactory { /** *...对象的创建被实现在工厂接口所暴露出来的方法中 抽象工厂创建相关的对象家族,而不需要依赖它们的具体类 相关代码链接 GitHub地址:https://github.com/kkzhilu/Kerwin-DesignPattern 兼顾了《HeadFirst
参考资料 《大话设计模式》《HeadFirst设计模式》
HeadFirst 核心代码 饿汉型 (不推荐) public class HazardousTypeSingleton { private static final App APP = new...同时只推荐以下三种写法: 基于双重锁校验的懒汉型 静态内部类方式 枚举方式 相关代码链接 GitHub地址:https://github.com/kkzhilu/Kerwin-DesignPattern 兼顾了《HeadFirst
领取专属 10元无门槛券
手把手带您无忧上云