真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java與模式源代碼,java源碼中的設(shè)計(jì)模式

求 JAVA 異步觀察者模式 的源代碼(完整的),不要同步的,好的給加分

package TestObserver;

創(chuàng)新互聯(lián)建站專注于雞西網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供雞西營銷型網(wǎng)站建設(shè),雞西網(wǎng)站制作、雞西網(wǎng)頁設(shè)計(jì)、雞西網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造雞西網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供雞西網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

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();

}

}

觀察者模式的精髓在于注冊一個(gè)觀察者觀測可能隨時(shí)變化的對象,對象變化時(shí)就會(huì)自動(dòng)通知觀察者,

這樣在被觀測對象影響范圍廣,可能引起多個(gè)類的行為改變時(shí)很好用,因?yàn)闊o需修改被觀測對象的代碼就可以增加被觀測對象影響的類,這樣的設(shè)計(jì)模式使得代碼易于管理和維護(hù),并且減少了出錯(cuò)幾率

至于異步機(jī)制實(shí)際是個(gè)噱頭,可以有觀測對象來實(shí)現(xiàn)異步,也可以有觀察者自身實(shí)現(xiàn),這個(gè)程序?qū)嶋H是觀測對象實(shí)現(xiàn)了異步機(jī)制,方法是在觀察者類外包裝了一層invoker類

我編寫的源代碼程序,在命令行模式中,輸入javac命令對源代碼進(jìn)行編譯,但是生成不了字節(jié)碼文件(class)?

javac HelloWorld.java 是執(zhí)行的相對路徑, 你是在bin目錄下執(zhí)行的,但bin目錄下面沒有HelloWorld.java文件;

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

2、配置環(huán)境變量, 在path加入 D:\loveyouth\Java\jdk1.7.0.75\bin;然后進(jìn)入HelloWorld.java所在文件夾中執(zhí)行javac HelloWorld.java命令

java源碼中應(yīng)用哪些設(shè)計(jì)模式

3種工廠模式 單例模式 策略模式 用的都很多 其實(shí)實(shí)際開發(fā)中用的最多的還是工廠和單例,其余的根本沒用過。


網(wǎng)站欄目:java與模式源代碼,java源碼中的設(shè)計(jì)模式
轉(zhuǎn)載注明:http://weahome.cn/article/hdhoos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部