随笔分类 -  设计模式

摘要:终于……看到了……代理模式…… 我觉得…… 这个模式…… 真的…… 好难啊…… 首先是远程代理 Java RMI 概观 ↑都是这个东西好难 代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 使用代理模式创建代表(representative)对象,让代表对象控制某对象的访问,被代理 阅读全文
posted @ 2017-03-17 14:10 我不吃饼干呀 阅读(306) 评论(0) 推荐(0) 编辑
摘要:情景:有一个自动投币的糖果机。它有以下几种状态(每个圆圈代表一个状态): 如果用常量值来定义几个变量 这样状态变化就可以写成: 每一个动作都要先判断状态,改后再决定反馈以及下一个状态是什么。 虽然可以实现要求,但是当出现新的状态的时候,很不利于扩展。 我们把状态变成一个类,把不同的状态封装在各自的类 阅读全文
posted @ 2017-03-16 11:13 我不吃饼干呀 阅读(192) 评论(0) 推荐(0) 编辑
摘要:适配器模式 适配器模式就是将一个接口转化成另一个接口。 一个常见的例子是插头转换器 我们知道英式插头长这样: 而国内的插头一般是这样的 这时候,你就需要一个转换插头了 而适配器的工作就像是一个转换插头。你不需要从新买一个电器,也不用换一个插孔,只需要一个转换器即可。 假设已有一个软件系统,你希望它能 阅读全文
posted @ 2017-03-15 10:41 我不吃饼干呀 阅读(304) 评论(0) 推荐(0) 编辑
摘要:情景: 屋里有很多家用电器,你需要设计一个遥控器,来控制所有电器的使用。 如果在遥控器中添加电器类,那就使得遥控器和具体电器类过度耦合了,遥控器不应该知道电器的实现细节。 遥控器应该简单一些,我们都知道遥控器只要一些按钮,所能做的动作仅仅是按下按钮,所以不应该包含太多的控制逻辑。 所以,这里需要用命 阅读全文
posted @ 2017-03-13 16:29 我不吃饼干呀 阅读(217) 评论(0) 推荐(0) 编辑
摘要:情景: 你是一个咖啡店老板,你会做很多种咖啡。 首先有一个超类,饮料类。 咖啡可以加很多种调料,就假设是A,B,C…… 那么你会有AB型的,AC型,BC型,A型的,B型,C型,ABC型的咖啡,那么你需要有六种具体子类。 如果有n种调料,你就要有(2^n-1)种具体子类有木有啊!!! 同时,如果,你添 阅读全文
posted @ 2017-03-13 10:12 我不吃饼干呀 阅读(183) 评论(0) 推荐(0) 编辑
摘要:单件模式是最简单的设计模式啦!(窝感觉~~) 有一些对象我们只需要一个,例如:线程池(threadpool),缓存(cache),充当打印机,显卡等设备的驱动程序的对象。 这些类对象只能有一个实例,多了会出现一些问题。 全局变量缺点:必须在一开始就创建对象,浪费资源。 只创建一个对象的方法:首先将构 阅读全文
posted @ 2017-03-11 14:07 我不吃饼干呀 阅读(270) 评论(0) 推荐(0) 编辑
摘要:当我们只用new去创建一个类时,我们就在针对这个具体类编程。如果能够不使用具体类,而是针对接口编程,将会对以后扩展有很大方便。 情景: 你是一个披萨店的老板,披萨有很多种类。 我们可能需要这么做 但是以后我们可能会有D,E,F....之列的更多的披萨。我们必须重新修改这份代码。 根据“封装变化”的设 阅读全文
posted @ 2017-03-10 13:26 我不吃饼干呀 阅读(301) 评论(0) 推荐(0) 编辑
摘要:情景: 气象站会实时发布气象数据,要求创建布告板,并把气象站发布的数据显示出来。 布告板会有很多,随时回添加一个或删除一个,而每个布告板显示的格式也不尽相同。 观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 被观察对象称作主题(Sub 阅读全文
posted @ 2017-03-07 17:00 我不吃饼干呀 阅读(253) 评论(0) 推荐(0) 编辑
摘要:情景: 要设计很多鸭子,每个鸭子都有quack(呱呱叫)和swim功能。 可以设计一个Duck类,含有quack()和swim()方法就可以了。具体鸭子类继承Duck类。 新需求:要求添加fly功能。 如果直接给Duck添加fly()方法,会出现问题,因为有一部分鸭子是不会飞的。 选择创建Flyab 阅读全文
posted @ 2017-03-06 18:35 我不吃饼干呀 阅读(169) 评论(1) 推荐(0) 编辑