经常看到说状态模式可以改写if-else结构,就没有看到有人具体说怎么做。 希望高手能解释下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.jdon.com/designpatterns/designpattern_State.htm 对的可以改变的把动作封装到对应的状态中head first design patterns http://blog.csdn.net/qutr/archive/2006/01/22/586034.aspx 看看他写的设计模式学习笔记吧 interface IState{ void do1(); void do2();}class State1 implements IState{ public void do1(){.....} public void do2(){.....}}class State2 implements IState{.....}public class MyApp{ IState state; public void setState(IState state){ this.state=state; } public void doSomething1(){ state.do1(); System.out.println(state.getClass().getName()); } public void doSomething() state.do2(); System.out.println(state.getClass().getName()); } public static void main(String[] args){ MyApp a=new MyApp(); a.setState(new State1()); a.doSomething1(); a.setState(new State2()); a.doSomething1(); }} 状态,其实就是充分利用多态如果不用状态,在类的 doSomething方法中就会有很多的if...else,但用了状态模式,就不用了 java 可变参数 Java面向对象编程,求一点是否在圆内……求改正! 急~~~~~~~如何编写一个高质量的equal方法~~ 组件添加的奇怪问题,急,帮帮忙,谢! [扑克程序]Java里怎么显示图像的一部分?(我用Swing做的界面) JAVA的类的方法,任何一个对象都可以对其进行修改? 我用JAVA来开发数据库,选用什么编译器 如何判断一个String类型的变量中存储的是不是一个数字。 请大虾指点,哪里有webspere下载??? list接口的likedlist容器类找不到方法 请教一个关于函数返回局部变量的问题,谢谢啦!~~~ 关于JAVA静态数组问题 急 在线等
可以改变的
把动作封装到对应的状态中
head first design patterns
看看他写的设计模式学习笔记吧
interface IState{
void do1();
void do2();
}
class State1 implements IState{
public void do1(){.....}
public void do2(){.....}
}
class State2 implements IState{.....}public class MyApp{
IState state;
public void setState(IState state){
this.state=state;
}
public void doSomething1(){
state.do1();
System.out.println(state.getClass().getName());
}
public void doSomething()
state.do2();
System.out.println(state.getClass().getName());
} public static void main(String[] args){
MyApp a=new MyApp();
a.setState(new State1());
a.doSomething1();
a.setState(new State2());
a.doSomething1();
}
}
如果不用状态,在类的 doSomething方法中就会有很多的if...else,但用了状态模式,就不用了