帮你记住,用的时候去问一下。 就象董事长和秘书一样
public class Manage {
public String next_week; //下个星期的安排
public String n_next_week; ///下个星期的安排 public Manage() { }
public Assistant getMemento() {
return new Assistant(this); }
public void setMemento(Assistant assistant) {
next_week=assistant.next_week;
n_next_week=assistant.n_next_week; } }
public class Assistant implements java.io.Serializable { public String next_week; public String n_next_week; public Assistant(Manage manage) {
next_week=manage.next_week;
n_next_week=manage.n_next_week; } }
public class Test {
11
设计模式
public Test() { }
public static void main(String[] args) { Manage manage=new Manage(); manage.next_week=\见客户\manage.n_next_week=\见大客户\System.out.println(manage.next_week); System.out.println(manage.n_next_week); Assistant assistant=manage.getMemento(); manage.next_week=\见1111客户\
manage.n_next_week=\见111111大客户\System.out.println(manage.next_week); System.out.println(manage.n_next_week); manage.setMemento(assistant);
System.out.println(manage.next_week); System.out.println(manage.n_next_week); } }
5,state模式理解
作者:罗鹏 email: luopeng@ec.com.cn 主要是用于状态的变化,就象红绿灯一样 如何使用state模式 1,要一个状态管理类 2,状态接口
3,各种子状态实现状态接口
State模式的效果
1)它将与特定状态的行为局部化,并且将不同的行为分割开来 2)它使得状态转化显式化 3)State对象可以被共享
state模式中谁定义状态转化??
state模式中并没有指定哪一个参与者定义状态转换准则。换句话说,它们可以在Context中定义,也可以在state子类自身指定她们的后继状态以及何时进行转换,后者通常更灵活。
public interface State{
public abstract void handleGreen(State state); public abstract void handleRed(State state); public abstract State getColor(); }
12
设计模式
public class Manage { private State state=null; public Manage(State state) {
this.state=state; }
public void changeToGreen() {
this.state=new GreenLight(); state.handleGreen(state); }
public void changeToRed() {
this.state=new RedLight(); state.handleRed(state); } }
public class GreenLight implements State { public State state=null; public State getColor() {
return state; }
public void handleGreen(State state) {
System.out.println(\绿灯,前进\ }
public void handleRed(State state) {
System.out.println(\,\ } }
public class RedLight implements State { public State state=null; public State getColor() {
return state; }
public void handleGreen(State s) {
System.out.println(\
13
设计模式
}
public void handleRed(State s) {
System.out.println(\红灯,Stop!!\ } }
public class Test {
public Test() { }
public static void main(String[] args) { GreenLight state=new GreenLight(); Manage manage=new Manage(state); manage.changeToRed(); manage.changeToGreen(); manage.changeToGreen(); manage.changeToGreen(); manage.changeToRed(); } }
GOF片段赏析
1,Decrator 模式不同于Adapter模式,因为装饰仅改变对象的职责而不改变它的接口,而适配器将给对象一个全新的接口。
2,Composite模式:可以将装饰视为一个退化的、仅有一个组件的组合。然而,装饰仅给对象添加一些额外的职责---它的目的不是在于对象聚集
6,Proxy模式
public interface Subject{ publib void request(); }
public RealSubject implements Subject {
public void request(){
System.out.println(\正在处理请求!\} }
14
设计模式
public class Proxy implements Subject{ private RealSubject realSubject; public Proxy(){ }
public void request(){
if(realSubject==null){ //这里有个单例 realSubject=new RealSubject(); }
realSubject.request();
System.out.println(\哈哈,是我在处理!\ } }
public class Client {
public static void main(String args[]){ Subject subject=new Proxy();
subject.request(); //客户端没有看出来,实际上客户端发出的请求,是Proxy在处理
//正常的没有采用代理的话,代码是这个样子的 /**
Subject subject=new RealSubject(); subject.request(); **/ } }
/**思考题**/ Proxy模式
public interface Subject{ publib void request(); }
public RealSubject implements Subject {
public void request(){
System.out.println(\正在处理请求!\} }
public class Proxy implements Subject{
15
设计模式
private RealSubject realSubject; public Proxy(){ }
public void request(){
if(realSubject==null){ //这里有个单例 realSubject=new RealSubject(); }
realSubject.request();
System.out.println(\哈哈,是我在处理!\ } }
public class Client {
public static void main(String args[]){ Subject subject=new Proxy();
subject.request(); //客户端没有看出来,实际上客户端发出的请求,是Proxy在处理
//正常的没有采用代理的话,代码是这个样子的 /**
Subject subject=new RealSubject(); subject.request(); **/ } }
7,Protype模式理解
比如说有个叫张三的一个人可以复制,呵呵,他还有一本书
import java.io.*;
import java.io.Serializable;
public class Zhangsan implements Cloneable,Serializable {