- 浏览: 334322 次
- 性别:
- 来自: 北京
最新评论
-
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道lvyua ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道怎么一直报 ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道怎么一直报找不到文件?找到原因了,e ...
java解析mp3工具 -
lvyuan1234:
怎么一直报找不到文件?
java解析mp3工具 -
Cy0941:
...
org.apache.catalina.connector.RequestFacade cannot be cast to org.springframewor
文章列表
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
AbstractExpression.java
package com.gary.designpattern.interpreter;
/**
* 解释操作接口
* @author gary
*
*/
public interface AbstractExpression {
public void interpret(int data);
}
LowerCaseExpression.java
package com.gary.designpattern ...
用一个中介对象来封装一系列的对象交互,使各对象不需要显示地相互调用
Mediator.java
package com.gary.designpattern.mediator;
/**
* 中介者
* @author gary
*
*/
public interface Mediator {
public void send(String message, Person person);
}
MediatorImpl.java
package com.gary.designpattern.mediator;
public clas ...
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止
Handler.java
package com.gary.designpattern.cor;
/**
* 处理请求的接口
* @author gary
*
*/
public abstract class Handler {
protected Handler handler;
public void setHandler(Handler handler){
this.handler = ha ...
将对象组合成树形结构以表示 部分-整体 的层次结构,使用户对单个对象和组合对象的使用具有一致性适用场合:忽略组合对象与单个对象的不同,统一使用组合结构中的所有对象
Company.java
package com.gary.designpattern.composite;
/**
* 公司类
* @author gary
*
*/
public abstract class Company {
protected String name;
public Company(){
}
public Company(String name) { ...
不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后可将该对象恢复到原先保存的状态适用场合:功能较复杂,但需要维护或记录属性历史,或需要保存的属性只是众多属性的一小部分
Originator.java
package com.gary.designpattern.memento;
/**
* 发起人
* @author gary
*
*/
public class Originator {
//需要保存的属性
private String messageA;
private String messageB;
pu ...
不同状态有不同的行为适用场合:控制一个对象状态转换的条件表达式过于复杂时
State.java
package com.gary.designpattern.state;
/**
* 抽象状态
* @author gary
*
*/
public abstract class State {
public abstract void greeting(Greeting g);
}
MorningState.java
package com.gary.designpattern.state;
/**
* 早上状态
* @autho ...
定义了一种一对多的依赖关系,让多个观察者对象同时去监听某一主题对象,这个主题对象发生变化时,会通知所有的观察者对象,使它们自动更新自己适用场合:一个对象的改变需要同时改变其它对象,且不知多少个有待改变
Hello.java
package com.gary.designpattern.observer;
import java.util.Observable;
/**
* 继承java.util.Observable
* 提供add/delete ovserver方法
* 提供notisfy所有observer的方法
* @author gary
*
...
通过使用抽象类等,定义一个算法骨架,而将一些步骤延迟到子类中,使子类可以不改变一个算法的结构即可重新定义该算法的特定步骤.适用场合:要完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同.
Template.java
package com.gary.designpattern.template;
/**
* 抽象模板
* @author gary
*
*/
public abstract class Template {
/**
* 模板方法,算法骨架
*/
public void sayHello( ...
动态给一个对象添加一些额外的职责,即为已有功能动态添加更多功能
SayHello.java
package com.gary.designpattern.decorator;
/**
* SayHello
* @author gary
*
*/
public class SayHello {
public void sayHello(){
System.out.println("sayHello:");
}
}
Decorator.java
package com.gary.designpattern.decor ...
定义了算法家族,分别封装起来,让它们之间可以相互替代,不影响调用
Strategy.java
package com.gary.designpattern.strategy;
public interface Strategy {
public void hello();
}
StrategyImplA.java
package com.gary.designpattern.strategy.impl;
import com.gary.designpattern.strategy.Strategy;
/**
* 算法,动作等A
* @aut ...
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用.很常用,较好体现了依赖倒转原则和迪米特法则思想.
Facade.java
package com.gary.designpattern.facade;
/**
* Facade类,需要了解子功能,并组合
* @author gary
*
*/
public class Facade {
/**
* 组合hello方法,供其它方法调用
*/
public void sayHello(){
System.out.println("s ...
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
Prototype.java
package com.gary.designpattern.prototype;
/**
* 此模式实现简单,因为Java提供clone方法
* 1.实现java.lang.Cloneable接口
* 2.覆盖clone方法
* java clone详解:
* 传送 ...
为其他对象提供一种代理以控制对这个对象的访问等
Service.java
package com.gary.designpattern.proxy;
/**
* 定义公用接口,这样使用RealService的地方都可以使用Proxy
* @author gary
*
*/
public interface Service {
public void sayHello();
}
RealService.java
package com.gary.designpattern.proxy;
/**
* 代理对象
* @author gary ...
将一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能在一起工作的类可以一起工作
Adaptee.java
package com.gary.designpattern.adapter;
/**
* 需要适配的目标
* @author gary
*
*/
public interface Adaptee {
public void doSomethingSpecial();
}
AdapteeImpl.java
package com.gary.designpattern.adapter.impl;
import com.ga ...
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,隐藏具体构建过程.
Builder.java
package com.gary.designpattern.builder;
/**
* 抽出整个build过程
* @author gary
*
*/
public interface Builder {
public void build ...