随笔分类 -  Java设计模式

《HeadFirst设计模式》读书笔记
摘要:假设有一个需求:要求实现一个糖果机的功能,糖果机的功能如下,用一个状态图来表示: 上图描述了糖果机在不同状态下可能会执行的操作和状态间的转换关系,图中每个圆圈代表一种状态。 下面我们按照常规的思路来实现一个糖果机,创建一个糖果机类,用int常量分别代表四种状态,另外定义int变量state代表当前状 阅读全文
posted @ 2020-08-24 12:15 ADvancedCZ 阅读(217) 评论(0) 推荐(0)
摘要:在抽象类中创建一个模板方法,这个方法可以调用在抽象类中定义好的其它方法,这些方法可以是抽象的,也可以是默认方法,甚至还可以是一个空的方法(叫做钩子),可以在子类中重写抽象方法或重写钩子方法,从而实现模板方法的某些具体步骤,这就是模板方法模式。模板方法模式可以实现代码的复用。 让我们来看一个具体的例子 阅读全文
posted @ 2020-07-19 21:18 ADvancedCZ 阅读(130) 评论(0) 推荐(0)
摘要:1.适配器模式(Adapter Pattern) 在生活中,如果我们想给笔记本电脑充电,那么直接将电脑和插座连接肯定是不行的,因为插座的电压是220V的交流电,而笔记本电脑需要的是较低电压的直流电,因此我们需要通过电源适配器将交流高电压转换成我们想要的直流低电压。适配器模式也是同样的道理,客户想要一 阅读全文
posted @ 2020-07-13 20:56 ADvancedCZ 阅读(194) 评论(0) 推荐(0)
摘要:命令模式就是将一系列执行操作封装成一个命令对象,这样这个命令对象就可以被传递,在需要执行的时候执行,比如当作队列或者日志的参数,同时命令模式也支持操作的撤销。 比如有一个需求,要求写一个遥控器类,用遥控器去控制不同电器的开关,下面是遥控器控制打开电灯的代码示例,遥控器按下打开按钮时电灯就会打开,按下 阅读全文
posted @ 2020-07-07 23:13 ADvancedCZ 阅读(171) 评论(0) 推荐(0)
摘要:装饰者模式可以实现在不修改任何代码的情况下,给对象赋予新的功能。 1.使用继承的缺陷: 假设一家咖啡店的类设计是有一个抽象父类Beverage(饮料): public abstract class Beverage { //由子类设置,用来描述具体饮料 protected String descri 阅读全文
posted @ 2020-07-04 22:50 ADvancedCZ 阅读(141) 评论(0) 推荐(0)
摘要:1.单例模式的定义:确保一个类只有一个实例,并提供一个全局访问点。 编写单例实例的要点是: 1)将构造方法私有化,确保别的类不能通过构造方法创建对象; 2)在本类中通过私有化的构造方法创建对象; 3)提供一个静态方法让其它类可以获取这个对象。 使用静态方法是因为普通方法要通过对象来调用,而其它类不能 阅读全文
posted @ 2020-07-04 10:06 ADvancedCZ 阅读(129) 评论(0) 推荐(0)
摘要:工厂模式可以细分为三种类型:1)简单工厂 2)工厂方法 3)抽象工厂。简单工厂其实并不是一个设计模式,反而比较像是一种编程习惯。总体来说,工厂模式可以减少应用程序和具体类之间的依赖,促进松耦合,同时也方便后期的扩展。 1.简单工厂 很多时候我们都采用new的方式直接创建一个对象,但当创建对象的代码逻 阅读全文
posted @ 2020-06-28 23:03 ADvancedCZ 阅读(147) 评论(0) 推荐(0)
摘要:我们现在要写一个气象监测的应用,它的需求如下: 只要当天气发生变化的时候,就要更新三个布告板的显示,分别是目前天气状况(温度、湿度和气压)、气象统计(平均值等)和天气预报三个布告板。布告板要可扩展,未来可能会有新的布告板 加入进来。 有关天气的原始数据我们可以通过提供好的WeatherData对象获 阅读全文
posted @ 2020-06-15 22:49 ADvancedCZ 阅读(143) 评论(0) 推荐(1)
摘要:1.假设有一个需求,要做一个模拟鸭子的应用。首先很自然的,我们会想到使用继承,先创建一个超类Duck,然后让不同类型的鸭子继承这个超类,复用Duck中的一些属性和功能。 2.这时我们来了一个需求,要求给一个可达鸭添加会飞的功能,为了体现OO的思想,我们不在具体的类中添加功能,还是在Duck类中添加了 阅读全文
posted @ 2020-06-09 14:36 ADvancedCZ 阅读(176) 评论(0) 推荐(1)