随笔分类 -  设计模式

这里学习的设计模式是基于《Head First 设计模式》这本书的学习而总结的。
摘要:/** * Created with IntelliJ IDEA. * User: HYY * Date: 13-10-27 * Time: 下午10:49 * To change this template use File | Settings | File Templates. */interface Product { public double money();}class Coffee implements Product{ @Override public double money() { return 10; }}class Ice imp... 阅读全文
posted @ 2013-11-15 13:16 无忧之路 阅读(280) 评论(0) 推荐(0) 编辑
摘要:import java.util.ArrayList;import java.util.List;/** * User: HYY * Date: 13-10-28 * Time: 下午1:34 * To change this template use File | Settings | File Templates. *//** * 这里使用接口是因为各个观察者可能有各自的独特的方法和属性,因此将其抽象成方法 */interface Observer { void update();}interface Subject { void addObserver(Observer ob... 阅读全文
posted @ 2013-11-15 13:13 无忧之路 阅读(522) 评论(0) 推荐(0) 编辑
摘要:单例有两种:懒汉式和饿汉式/** * 懒汉式的单例模式 * 这种单例模式如果采用到多线程调用该方法,有可能会产生多个实例,原因是: * 当线程一进入了①处,此时轮到线程二的时间片,线程二也来到①处,则两个线程各自会创建实例,这样就不满足单例模式的目标了 * 解决办法有三种: * 1.将懒汉式转换成饿汉式,当类加载的时候就完成对该实例的创建,这样多线程操作的时候只会获取该实例而不会创建该实例,自然也不会产生多个实例了 * 2.在getInstance方法前加入synchronized关键字 * 3.“双重检查加锁” * User: HYY * Date: 13-11-15 * Time: 下午1 阅读全文
posted @ 2013-11-15 13:07 无忧之路 阅读(370) 评论(0) 推荐(0) 编辑
摘要:/** * 策略设计模式 * 策略模式:定义一系列的算法族,使他们之间可以相互转换,动态的改变其行为。 * 问题:设计一个鸭子模拟游戏。 * 现在有一群鸭子: * ①这些鸭可以有飞的行为(分为快和慢),也可以没有飞的行为; * ②对于鸭的叫声有沉默,也有响亮地叫,或者说也有小声地叫。那么按照我们平时的设计习惯,我们首先会定义一个父类(鸭), * 然后我们将这两种行为排列组合将产生3*3=9个鸭子的子类,这是一件多么费体力的事情。如果说还有另外一些行为呢,那又要乘了,所以这种设计方式显然不好。 * 我们现在采用策略设计模式:将行为抽象定义成各个接口,然后将他们的具体行为封装成各个对象,使这些对象 阅读全文
posted @ 2013-11-12 00:30 无忧之路 阅读(247) 评论(0) 推荐(0) 编辑

无忧之路
点击右上角即可分享
微信分享提示