觀察者模式_起到控制器的作用

package com.MrZhou.Obsever;

import java.util.ArrayList;
import java.util.List;

/*
 * 什麼是觀察者模式?一般提到原告,必然腦子立刻聯想到被告,觀察者和被觀察者就如同原告和被告總是那麼成對出現。
 * 觀察者模式,又被叫做訂閱模式,有訂閱者和發佈者。當下IPHONE6異常火爆,國內粉絲要想購買,那必須得預定,
 * 必須到它蘋果官方去預定,填一大堆資料,交不交錢我不知道,反正得預定登記。等粉絲等到兩眼欲穿、花兒快謝了時候
 * ,它粉墨登場了,官方以高姿態從容向預定過的粉絲髮售。這蘋果就是被觀察者,粉絲就是觀察者,
 * 觀察者和被觀察者之間需要建立聯繫,那就是登記。登記過後,被觀察者拿捏火候覺得時機成熟的時候,
 * 就以權位者姿態向觀察者拋出繡球,觀察者迫不及待的伸出雙手牢牢抓住後,滿心歡喜的讚美蘋果的偉大和自己的慶幸。
 * 睜大眼睛盯着目標看,期待期望結果,這就是觀察者模式。
 * 
 */
public class Test {

	public static void main(String[] args) {

		American american = new American();
		Apple apple = new Apple();
		Chinese chinese = new Chinese();
		
		System.out.println("IPhone現在開始預約了。。。。");
		apple.countRegisterHumanNumber(chinese);
		apple.countRegisterHumanNumber(american);
		apple.offerIphone();
	}
}

/*
 * 觀察者
 */
class Apple {

	List<Fensi> item = new ArrayList<>();
	
	public void countRegisterHumanNumber(Fensi fans)
	{
		item.add(fans);
		fans.register();
		System.out.println("現在有"+item.size()+"個人預約了。。。小夥伴趕緊哦,很快就沒有了呢。。");
	}
	
	
	public void offerIphone()
	{
		System.out.println("IPhone發貨了。。。。。");
		for(int i = 0;i < item.size();i++)
		{
			item.get(i).toCao();
		}
	}
	
	
}

class American implements Fensi {

	@Override
	public void register() {
		System.out.println("我是美國人,嗯,它預熱的時候手機的功能很齊全,應該很好用吧。。。。。");
	}

	@Override
	public void toCao() {
		System.out.println("美國人    :   不會吧,卡了一B。。。。。。。又賣這麼貴。。。");
	}

}

class Chinese implements Fensi {
	// 很多中國人的盲目行爲
	@Override
	public void register() {
		System.out.println("我是中國人,昨天不知道爲什麼就去預約登記買最新版的Iphone了,傻傻不知道爲什麼。。。");
	}

	// 拿到手後的吐槽
	@Override
	public void toCao() {
		System.out.println("中國人   :  土豪金真好看,美觀,好喜歡啊。。。。。");
	}
}

/*
 * 預定登記 吐槽
 */
interface Fensi {
	public void register();

	public void toCao();
}








控制檯打印的結果:

IPhone現在開始預約了。。。。
我是中國人,昨天不知道爲什麼就去預約登記買最新版的Iphone了,傻傻不知道爲什麼。。。
現在有1個人預約了。。。小夥伴趕緊哦,很快就沒有了呢。。
我是美國人,嗯,它預熱的時候手機的功能很齊全,應該很好用吧。。。。。
現在有2個人預約了。。。小夥伴趕緊哦,很快就沒有了呢。。
IPhone發貨了。。。。。
中國人   :  土豪金真好看,美觀,好喜歡啊。。。。。
美國人    :   不會吧,卡了一B。。。。。。。又賣這麼貴。。。




發佈了33 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章