设计模式
zero__007
这个作者很懒,什么都没留下…
展开
-
观察者模式(Observer)
观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。这里把RSS订阅改称为“主题”(Subject),订阅者改称为“观察者”(Observer)。 看实现代码:原创 2015-05-19 21:07:49 · 374 阅读 · 0 评论 -
装饰模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。 代码如下: //抽象的组件类,具体组件功能的抽象封装 public interface Component { void doSomething(); }//具体的组件类 public class ConcreteComponent implemen转载 2015-06-12 19:48:58 · 462 阅读 · 0 评论 -
状态模式(State)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常,有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据转载 2015-07-03 22:17:22 · 475 阅读 · 0 评论 -
Archetype&Specification&Publish-Subscribe
转载自:http://blog.csdn.net/m13666368773/article/details/7472126 http://blog.csdn.net/m13666368773/article/details/7472140 http://blog.csdn.net/m13666368773/article/details/转载 2015-09-23 18:03:46 · 316 阅读 · 0 评论 -
循循渐进的GenericServlet
在做web开发时,创建自己的servlet时,通常需要实现javax.servlet.Servlet接口,并覆写Servlet所有的方法,例如: import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletExc原创 2015-09-26 09:45:09 · 422 阅读 · 0 评论 -
重构示例_01
遇到这样的代码: public void callMethodA() { List list = tomcatDao.getTomcat(); for (final TomcatVO tomcat : list) { executor.execute(new Runnable() { public void run() {原创 2015-12-21 21:53:57 · 441 阅读 · 0 评论 -
单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 单例模式的特点: 1、只能有一个实例; 2、必须自己创建自己...原创 2015-05-11 15:06:09 · 367 阅读 · 0 评论 -
代理模式(Proxy)
代理模式的意图是为其他对象提供一种代理以控制对这个对象的访问。首先,作为代理,代理对象必须与被代理对象有相同的接口,这是非常重要的。换句话说,用户不能因为使用或者不使用代理而改变,其次,需要通过代理控制对象的访问。这时对于需要代理的客户,被代理对象应该是不透明的;否则谈不上控制。 (1)Proxy:保存一个引用使得代理可以访问实体。若RealSubject和subject的接口相同,P转载 2015-06-07 19:48:12 · 526 阅读 · 0 评论 -
外观模式(Facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类与类之间的耦合度。 先看下示例: public class CPU { public void startup(){ System.out.println("cpu startup!");转载 2015-06-16 16:23:39 · 283 阅读 · 0 评论 -
桥接模式(Bridge)
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。 桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化, 像常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。 实现转载 2015-06-17 23:19:14 · 412 阅读 · 0 评论 -
适配器模式(Adapter)
适配器可以将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 1.类的适配器模式 核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口是Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码: public class Source {转载 2015-06-02 10:51:12 · 392 阅读 · 0 评论 -
组合模式(Composite)
将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 直接来看代码: import java.util.List; //抽象的部件类描述将来所有部件共有的行为 public abstract class Employer { private String name; public void setName(String name转载 2015-06-20 15:42:16 · 359 阅读 · 0 评论 -
策略模式(Strategy)
使用策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。 接口: public interface SortStrategy { void Sort(); } 实现类: public class转载 2015-05-14 20:31:14 · 314 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 针对如下需求,有一个字符串过滤链,需要过滤字符串中的某些字符,如要把“ 可以先定义一个接口: public interface Filter { String doFilter(String str); }原创 2015-05-18 22:24:21 · 382 阅读 · 0 评论 -
模板方法模式(Template Method)
模板方法模式,定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。 看下面的例子,在AbstractCalculator类中定义一个转载 2015-06-27 09:22:27 · 401 阅读 · 0 评论