易截截图软件、单文件、免安装、纯绿色、仅160KB

Java设计模式之State(状态模式)

定义:
GOF《设计模式》中给状态模式下的定义为:允许一个对象在其内部状态改变时改变它的行为。
先看一个例子:
package com.state;
public class KissingPrincess {
// 标志位,标志是青蛙还是王子。
private boolean isFrog = true;
// 根据isFrog进行不同的操作。
public void greet() {
if (isFrog)
System.out.println("frog!");
else
System.out.println("prince!");
}
// 将isFrog设置成false。
public void kiss() {
isFrog = false;
}

// 主函数。
public static void main(String[] args) {
KissingPrincess prince = new KissingPrincess();
prince.greet();
prince.kiss();
prince.greet();
}
}

输出结果:
frog!
prince!
这个例子中,用了一个变量isFrog来标识是青蛙还是王子,如果是王子的话,输出"prince!",是青蛙的话,输出:“frog!”。
本例中的写法,用个朋友的话来说,只是“入门级程序员的写法”。在java中,要时时注意OOP(Object Oriented Programming)的概念。
如果状态很多的话,就会使用很多if else 语句,不仅繁琐难于维护,而且没有体现出面向对象编程的思想。
对上例应用状态模式后,可以变成如下的代码:
package com.state;
public class KissingPrincess2 {

private State state = new Frog();

private interface State {
void response();
}

private class Frog implements State {

@Override
public void response() {
System.out.println("frog!");
}
}

private class Prince implements State {

@Override
public void response() {
System.out.println("prince!");
}
}

public void greet() {
state.response();
}

public void change(State state) {
this.state = state;
}

public static void main(String[] args) {
KissingPrincess2 prince2 = new KissingPrincess2();
prince2.greet();
prince2.change(prince2.new Prince());
prince2.greet();
}
}
输出结果:
frog!
prince!
上述例子就是state模式的基本思想,希望读者朋友们认真体会。
这里再举个state模式的例子:
玩过cs的人都知道,cs里面有很多枪,ak47啊,m16啊,但是不管什么枪


相关文档:

JAVA调DLL,.JNI技术实践

鉴于爬虫开发需要一个图片解析功能的函数,到网络上查找了一些jni方面的内容,并做了自己的一些修改,具体如下:
   目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。 ......

我和Java的一些往事

     大家知道,在1991年,几乎与Linux同时,SUN发布了Java编程语言。不久,我的大学同学(比我低两年)王克宏教授(清华博士导师)与SUN合作成立了中国最早的“Java研究中心”,并且担任该中心主任。从此,我开始注意Java技术的发展动态。我家中的存书,以Java书籍最多(当然,除了数学书籍 ......

java jdbc 连接Oracle9i

     自己在做这个程序的时候看过很多的资料,上网也查了不少的资料,可是多半说的是出神入化,云里雾里...不光看了不明白,而且是有明白一点的人,看了也变的有些模糊了。
     这里我掩饰一套完整的java jdbc 连接Oracle9i的范例。
package com.lxh.dbcon;//打包
import ......

学习Java值传递方法

学习Java值传递方法-武汉北大青鸟
  值传递是在一个函数中,调用另外一个函数,其中含有参数传递的情况。往往值传递就是把数据传递到另外一个函数中进行进一步处理,以更清楚地显示函数的表达意思。在函数调用的时候会有数据传递,同样要考虑形参和实参的问题,如下面的一个程序:
  on error resume next ShockMode ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号