易截截图软件、单文件、免安装、纯绿色、仅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列出某文件夹下的所有文件


File   f=new   File("DerectoryName");      
  String   []results=f.list();   
  
import java.io.*;    
  public class listFile    
  {  &nb ......

java调用dll例子


最佳答案
1. 编写范例文档
public class TestNative
{
private native static int Max(int a,int b);
public static void main(String[] args)
{
System.out.println(Max(4,5));
}
static
{
System.loadLibrary("VCdll");
}
}
其中
LoadLibrary中的DLL文件名称可以 ......

java中的string类型全面解析

1. 首先String不属于8种基本数据类型,String是一个对象。
  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
  2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
  3. String str=”kvill”;
......

java报表JXL和POI打印设置


JXL的打印设置在jxl.SheetSettings这个类中,我们可以通过方法Sheet(或者WritableSheet)#getSettings()获取。
1.页面
1.1方向
SheetSetting#setOrientation(PageOrientation po);
参数:  PageOrientation#LANDSCAPE       横向打印
PageOrientation# PO ......

学习Java值传递方法

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