网站建设资讯

NEWS

网站建设资讯

java与模式源代码,java源码中的设计模式

求 JAVA 异步观察者模式 的源代码(完整的),不要同步的,好的给加分

package TestObserver;

创新互联建站专注于鸡西网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供鸡西营销型网站建设,鸡西网站制作、鸡西网页设计、鸡西网站官网定制、微信小程序定制开发服务,打造鸡西网络公司原创品牌,更为您提供鸡西网站排名全网营销落地服务。

import java.util.Iterator;

import java.util.Vector;

/**

*

* @author Seastar

*/

interface Observed {

public void addObserver(Observer o);

public void removeObserver(Observer o);

public void update();

}

interface Observer {

public void takeAction();

}

class Invoker {

private Observer o;

Handler handler;

public Invoker(Observer o) {

new Handler();

this.o = o;

}

private class Handler extends Thread {

public Handler() {

handler = this;

}

@Override

public void run() {

o.takeAction();

}

}

public boolean TestSameObserver(Observer o) {

return o == this.o;

}

public void invoke() {

handler.start();

}

}

class ObservedObject implements Observed {

private VectorInvoker observerList = new VectorInvoker();

public void addObserver(Observer o) {

observerList.add(new Invoker(o));

}

public void removeObserver(Observer o) {

IteratorInvoker it = observerList.iterator();

while (it.hasNext()) {

Invoker i = it.next();

if (i.TestSameObserver(o)) {

observerList.remove(i);

break;

}

}

}

public void update() {

for (Invoker i : observerList) {

i.invoke();

}

}

}

class ObserverA implements Observer {

public void takeAction() {

System.out.println("I am Observer A ,state changed ,so i have to do something");

}

}

class ObserverB implements Observer {

public void takeAction() {

System.out.println("I am Observer B ,i was told to do something");

}

}

class ObserverC implements Observer {

public void takeAction() {

System.out.println("I am Observer C ,I just look ,and do nothing");

}

}

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

ObserverA a = new ObserverA();

ObserverB b = new ObserverB();

ObserverC c = new ObserverC();

ObservedObject oo = new ObservedObject();

oo.addObserver(a);

oo.addObserver(b);

oo.addObserver(c);

for (int i = 0; i 5; ++i) {

oo.addObserver(new Observer() {

public void takeAction() {

System.out.println("我是山寨观察者"+",谁敢拦我");

}

});

}

//sometime oo changed ,so it calls update and informs all observer

oo.update();

}

}

观察者模式的精髓在于注册一个观察者观测可能随时变化的对象,对象变化时就会自动通知观察者,

这样在被观测对象影响范围广,可能引起多个类的行为改变时很好用,因为无需修改被观测对象的代码就可以增加被观测对象影响的类,这样的设计模式使得代码易于管理和维护,并且减少了出错几率

至于异步机制实际是个噱头,可以有观测对象来实现异步,也可以有观察者自身实现,这个程序实际是观测对象实现了异步机制,方法是在观察者类外包装了一层invoker类

我编写的源代码程序,在命令行模式中,输入javac命令对源代码进行编译,但是生成不了字节码文件(class)?

javac HelloWorld.java 是执行的相对路径, 你是在bin目录下执行的,但bin目录下面没有HelloWorld.java文件;

1、可以javac E:\test\HelloWorld.java 把全路径加上

2、配置环境变量, 在path加入 D:\loveyouth\Java\jdk1.7.0.75\bin;然后进入HelloWorld.java所在文件夹中执行javac HelloWorld.java命令

java源码中应用哪些设计模式

3种工厂模式 单例模式 策略模式 用的都很多 其实实际开发中用的最多的还是工厂和单例,其余的根本没用过。


当前文章:java与模式源代码,java源码中的设计模式
分享路径:http://cdweb.net/article/hdhoos.html