Category Archives: 设计模式

装饰器模式和代理模式的区别

在典型的例子上,两者是非常好区分的。如spring的AOP、远程代理类、JDK的proxy,都是代理模式。JDK里的输入/输出器是很典型的装饰器模式!
但在有些场景上,对设计模式入门的新手,还是有点难区分,我曾经也一度为此困惑。
两个模式的UML类图基本没区别,都是实现同一个接口,一个类包装另一个类。 Continue reading

Posted in 编程开发, 设计模式 | Comments Off

面试场景中的模式-状态模式

公司面试的时候,通常都会有很多轮面试,如:电话面试(电话通知)、初试、复试、终试。 每经过一轮面试,面试者的状态都会随之改变。 状态图: 通常我们的做法是,使用一个变量标示现在的状态和跟踪对象的行为,但是这种做法,当状态比较多情况下,就会很多的嵌套的if语句,代码会变的非常不好维护和扩展。 使用状态模式,将会使代码变的非常简洁。 状态模式就把状态之间的转换的处理逻辑分散到代表状态的各个类中。 我们公司面试流程中的每个状态都定义成一个类,UML图如下 State的实现类都是没有状态的,所以通常都是单例的,InterviewContext来跟踪当前的状态 部分代码如下 InterviewContext.java ?View Code JAVApackage designpattern.state;   public class InterviewContext { private String interviewee = null; private State state = null;   public InterviewContext(String interviewee) { this.interviewee = interviewee; this.state = State.NORMAL_STATE; … Continue reading

Posted in 编程开发, 设计模式 | Comments Off

面试场景中的模式-策略模式

最近一直在忙于找工作,今天去一家公司,他们非常注重设计模式和OOD,在笔试题目里占了非常大的比重。本人虽然看过有关设计模式的书籍,但在项目实践中,很多design patterns还没用过,所以笔试做的不是很理想。在回来的路上,静静的想了想,生活中还是有设计模式的场景。 就比如,今天的面试,如何坐车面试的场景:我可以做公交车过去,也可以打的过去,或者骑自行车,地铁等,这些都是策略。它们有共同的目的把我带到面试地点去。 UML图 Strategy.java ?View Code JAVApackage designpattern.strategy;   public class TaxiStrategy implements Strategy {   @Override public void take(People p) { System.out.println(p.getName() + "乘出租车去面试"); }   } People.java ?View Code JAVApackage designpattern.strategy;   public class People { public … Continue reading

Posted in 编程开发, 设计模式 | Comments Off