成都网站建设设计

将想法与焦点和您一起共享

如何分析J2EE设计模式中的State模式

这期内容当中小编将会给大家带来有关如何分析J2EE设计模式中的State模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

专注于为中小企业提供成都网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业延长免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

设计模式,这个概念现在是满天飞,大家手里面估计都有,Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, in the book "Design Patterns - Element of Re-Useable Object-Oriented Software",这本书。根据其中的说法,有三种,创建型模式、结构型模式和行为型模式。一共包括23个模式,在这里不一一列举。实际应用中,我们不可能在短时间内消化吸收掉,因为模式本身就是约定俗成的东西,依靠大家以往的项目经验总结出来的习惯用法。

我们现在就看看一个例子。以行为型模式State为例。(模式的实现例子网络上有很多。Java的实现也很多,比如,Together ControlCenter里面就内置了这种基于GP的编程模板,详细内容大家用用就知道了。)

大家知道,State的用意在于,允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了他的类。

首先看接口类,State.java

public interface State {   public void handle();   }

以定义接口以封装与Conext(代码稍候陈述!)的一个特定状态相关的行为。

然后看,接口的实现类。***个,ConcreteState1.java

public class ConcreteState1 implements State {   public void handle() {   System.out.println("ConcreteState1.handle() executing");   }   }

第二个,ConcreteState2.java

public class ConcreteState2 implements State {   public void handle() {   System.out.println("ConcreteState2.handle() executing");   }   }

这两个类实现了State接口。

然后再看,Context.java是如何将上述三个.java文件联系起来。

public class Context {   public static final int STATE_ONE = 0;   public static final int STATE_TWO = 1;

//大家注意,这句话很关键,该模式做手脚的地方!

private State currentState = new ConcreteState1();   public void request() {   currentState.handle();   }   public void changeState(int state) {   switch (state) {   case STATE_ONE:   currentState = new ConcreteState1();//关键点   break;   case STATE_TWO:   currentState = new ConcreteState2();//关键点   break;   }   }   }

这样,写好4个.java文件后,其实您已经实现了State设计模式,很有趣,对吧?就是这样简单。

再看看如何使用该设计模式了。写一个Client.java看看。

public class Client {   public static void main(String[] args) {   // 构造Context   Context ctx = new Context();   // 唤起Context.request()   ctx.request();   // 改变ctx的状态?为什么改变了呢?大家想想看。   ctx.changeState(Context.STATE_TWO);   // 再次唤起Context.request(),结果大不一样。   ctx.request();   }   }

上述就是小编为大家分享的如何分析J2EE设计模式中的State模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


网页名称:如何分析J2EE设计模式中的State模式
标题路径:http://chengdu.cdxwcx.cn/article/jjjcso.html