摘要: 迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 下面我们利用java自带的迭代器接口实现这个迭代器模式 首先我们定义一个自定义的集合类,并实现它的迭代器 测试 结果 阅读全文
posted @ 2019-04-02 00:03 oeleven 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式是一种运用十分广泛的设计模式,它定义了一个方法的主体步骤,各个子类可以根据具体业务去自定义的实现各自特殊的步骤。下面是一个简单的例子 我们定义了一个template的抽象模板类,其中主方法中执行了四个步骤,其中步骤2是各个子类都不同的,也是各个子类都需要实现的方法,所以定义为抽象方法,步 阅读全文
posted @ 2019-03-24 23:35 oeleven 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 我们每天上班回到家的时候都会做一系列的动作,像打开灯、打开电视和打开音响,用代码描述就如下一样。 public class Light { public void on() { System.out.println("打开了灯!"); } public void off() { System.out 阅读全文
posted @ 2019-03-18 00:29 oeleven 阅读(199) 评论(1) 推荐(0) 编辑
摘要: 适配器模式可以将一个类的接口,转换成客户期望的另外一个接口,让原本接口不兼容的类可以合作无间。 现在我们有一个电视的类,新版电视的开关接口和老版电视的开关是不一样的,客户想要接着用老版电视的开关模式来操作新版电视,这时候就能用适配器模式来解决这个问题。 适配器模式可以分为对象适配器、类适配器和接口适 阅读全文
posted @ 2019-03-18 00:00 oeleven 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 假设现在我们需要制作一个万能遥控器,去 阅读全文
posted @ 2019-03-11 00:34 oeleven 阅读(204) 评论(1) 推荐(1) 编辑
摘要: 单例模式是一个比较简单的设置模式,在我们编码的过程中,有一些类会经常使用到,但是只需要一个实例就可以实现,如果大量的创建实例,可能会导致许多问题,如资源的大量使用、程序异常等。 这时候就轮到单例模式展现他的力量了。 单例模式确保了一个类只有一个实例,并提供了一个全局的访问点,下面我们看一个最简单的单 阅读全文
posted @ 2019-03-10 21:56 oeleven 阅读(175) 评论(2) 推荐(1) 编辑
摘要: 抽象工厂,提供一个工厂接口,用于创建依赖对象的家族,不需要明确指定具体类。可以理解是多个工厂方法的组合。 例如一个款手机是有电池、相机、处理器、屏幕组成的,它其中包含了不同的对象,我们创建时需要创建多个不同类型的对象,而工厂方法只能创建一种类型的对象,满足不了这种需求。那我们可以把多个工厂方法组合到 阅读全文
posted @ 2019-03-04 23:35 oeleven 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 首先是简单工厂,它其实不是一种设计模式,更像是一种编程习惯。 假设我们需要生产一部手机,这个手机可以是2017年的新款,也可以是2018年的新款,根据我们的需要,生产出手机。所有的手机都继承一个手机基类,我们可以把手机对象创建的过程提取出来,创造一个工厂从工厂中根据需求返回需要的手机。 代码如下 p 阅读全文
posted @ 2019-03-03 23:07 oeleven 阅读(143) 评论(0) 推荐(1) 编辑
摘要: 我们到咖啡店喝咖啡的时候,往往会根据各自的口味去选择咖啡和各种配料,比如咖啡可以选择综合、深焙、低咖啡因、浓缩,配料可以选搭牛奶、摩卡、豆浆、奶泡。这个情境下就可以使用装饰者模式,用配料对咖啡进行装饰,组合成不同的咖啡。 装饰者模式——动态的将职责附加到对象上。想要扩展功能,装饰者模式是有别于继承的 阅读全文
posted @ 2019-02-21 23:03 oeleven 阅读(330) 评论(0) 推荐(1) 编辑
摘要: 观察者模式在主题和观察者之间定义一个一对多的依赖关系,当主题发生变化的时候,就会通知依赖它的对象主题已经发生了变化。观察者可以订阅主题,也可以取消订阅,当它取消订阅之后,主题发生的任何改变都不会通知到它,除非它再次订阅主题。 这次举得一个例子是气象站和布告栏,气象站用来检测气候的变化,布告栏用来显示 阅读全文
posted @ 2019-02-21 21:16 oeleven 阅读(176) 评论(0) 推荐(0) 编辑