随笔分类 -  DesignPattern

Design Pattern or Design Principle.
摘要:有一些对象其实我们只需要一个,比如:线程池、缓存、充当显卡等设备的驱动程序的对象。这类对象只能有一个实例,否则会出现很多问题,资源消耗过多、数据不一致等。定义 确保一个类只有一个实例,并提供一个全局的访问点。类图 说明:1.一个private static的Singleton实例变量instance. 2.一个public static 的getInstance方法,返回instance。 3.一个私有构造方法经典实现public class Singleton { private static Singleton instance = null; private ... 阅读全文
posted @ 2013-06-09 22:58 g.hui 阅读(786) 评论(0) 推荐(0)
摘要:开始之前 插播一个设计原则:依赖倒置原则 依赖倒置原则:要依赖抽象,不要依赖具体类定义 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。UML类图 分析: 可以看到Client只与抽象的工厂类,及抽象的产品类有关联。利用这此抽象类或接口书写代码,我们的代码将从具体类解耦,这也就遵守了上面提到的一个设计原则:依赖倒置原则。实例 一个买手机的例子,我们到PhoneStore买手机。然后商店根据我们选择的手机品牌,开始制作手机,手机中有两个主要部件:cpu,主板。下图是uml类图:关键代码:1>Cpu,Mainboardpublic abstract class Cpu.. 阅读全文
posted @ 2013-05-11 18:16 g.hui 阅读(287) 评论(0) 推荐(0)
摘要:在初学设计模式【4】简单工厂模式——SimpleFactory中介绍了工厂模式中最简单的一个模式——简单工厂模式。正如它的名字一样,此模式的确很简单,但缺点也很明显。如果需要添加新的产品类时,就需要修改工厂类。很明显这违反了一个重要的OO设计原则——开闭原则。为了克服简单工厂模式的这个问题,就有了一个新的工厂模式——工厂方法模式。定义 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。UML类图分析:1>Product与Creator都是抽象类,Creator中有一个抽象工厂方法factoryMethod,此方法也是此模式的核心。各具体创建者类必 阅读全文
posted @ 2013-05-10 14:17 g.hui 阅读(218) 评论(0) 推荐(0)
摘要:在java中我们是通过new来实例化一个对象的,但这似乎和面向对象程序设计的一个原则(针对超类型编程,不针对具体实现编程)相悖。因为每当我们用new时就必然会针对具体类,为了解决这个问题就有了一个新的设计模式——工厂模式。 与别的模式不同工厂模式包括三种——简单工厂模式、工厂方法模式、抽象工厂模式。此篇介绍简单工厂模式。简单工厂模式 严格来说,简单工厂不算一个设计模式,反而比较像是一种编程习惯。姑且就把当一个模式来学习吧。简单工厂模式主要是用来避免直接在客户代码中实例化具体对象以达到提高抽象层次避免针对具体编程的目的。UML类图图1分析:1>Client代表客户代码,就是我们需要一个具体 阅读全文
posted @ 2013-05-09 19:48 g.hui 阅读(297) 评论(0) 推荐(0)
摘要:装饰模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。如定义中说的那样,装饰模式可以动态的为对象添加新的职责,通过继承也能达到扩展类功能的目的。那么这两种方式的区别在哪里呢?虽然通过继承也能达到扩展功能但这种方式是在编译时静态决定的,所有子类都会继承到相同的行为,不具有弹性,应对未来变化的能力较低。而通过Decorator模式就可以在运行时动态扩展,而且被装饰对象可以自由组合新的行为,更易于应对未来的功能扩展。设计原则:类应该对扩展开放,对修改关闭。这就是“开放关闭”原则。类应该是容易扩展的在不需要修改现有代码的情况下,这样的设计可以应对改变,而且不会引入.. 阅读全文
posted @ 2013-04-29 11:06 g.hui 阅读(263) 评论(0) 推荐(0)
摘要:在Observer观察者模式中介绍了观察者模式,这一篇中我们看一下Java对观察者模式内置的支持。在java.util包中有一个Observable类,还有一个Observer接口。1.Observable类 从字面意思来理解,这是一个“可被观察者”,对应于观察者模式中的"主题“接口。源码:View Code 1 public class Observable { 2 private boolean changed = false; 3 private Vector obs; 4 5 /** Construct an Observable wi... 阅读全文
posted @ 2013-04-26 15:50 g.hui 阅读(187) 评论(0) 推荐(0)
摘要:形象描述 什么是观察者模式呢?个人感觉,这个和现在很流行的微信比较像。在微信中我们可以Follow一些公众号,比如明人、明星、企业等。这样呢,我们就会即时收到他们推送给我们的消息。这里面有两个角色,一个就是我们所Follow的这些公众号,还有就是我们自己。在观察者模式中我们称我们Follow的对象为“主题”或“可被观察者”,我们自己就是“观察者”。定义 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。UML类图 说明: 当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间松耦... 阅读全文
posted @ 2013-04-25 22:43 g.hui 阅读(1253) 评论(1) 推荐(0)
摘要:推荐大家阅读:《head first 设计模式》,下面总结的内容主要是从这本书中来的,加上自己的理解加以整理。开始之前 OO基础:抽象、封装、多态、继承 OO原则:封装变化;多用组合少用继承;针对接口(superType)不针对实现编程定义 defines a family of algorithms,encapsulates each one,and makes them interchangeable.Strategy lets the algorithm vary independently from clients that use it.定义算法簇,分别封装起来,让它们之间可以... 阅读全文
posted @ 2013-04-22 13:03 g.hui 阅读(271) 评论(0) 推荐(0)