温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-11 17:01:27 来源:亿速云 阅读:106 作者:柒染 栏目:编程语言

这期内容当中小编将会给大家带来有关如何分析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模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI