经常看到说状态模式可以改写if-else结构,就没有看到有人具体说怎么做。

孤尽JavaSea 2009-12-25 09:58:27
希望高手能解释下。
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangyh 2009-12-30
  • 打赏
  • 举报
回复
状态,其实就是充分利用多态
如果不用状态,在类的 doSomething方法中就会有很多的if...else,但用了状态模式,就不用了
jiayouyubo 2009-12-29
  • 打赏
  • 举报
回复
hao hao hao
孤尽JavaSea 2009-12-28
  • 打赏
  • 举报
回复
能解释一下6楼的代码,为什么是一种状态模式。它的思想精华体现在哪里??
lodachi 2009-12-26
  • 打赏
  • 举报
回复
帮顶~~
ouyangyh 2009-12-26
  • 打赏
  • 举报
回复

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();
}
}
crazylaa 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 swandragon 的回复:]
http://www.jdon.com/designpatterns/designpattern_State.htm
[/Quote]
up
老张-AI 2009-12-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/qutr/archive/2006/01/22/586034.aspx
看看他写的设计模式学习笔记吧
pjw100 2009-12-25
  • 打赏
  • 举报
回复
路过学习,并且帮顶。
sean1203 2009-12-25
  • 打赏
  • 举报
回复
对的
可以改变的
把动作封装到对应的状态中
head first design patterns

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧