您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 java 訂閱者模式(java設計模式-回調、事件監聽器、觀察者模式)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-03 06:15:59【】9人已围观
简介java設計模式之觀察者模式(Observer)//SubjectjavapackageyoungmastermodelObserver;/***@authoryoungmaster*@Email:y
java 設計模式之 觀察者模式(Observer)
//Subject java
package youngmaster model Observer;
/
*** @author youngmaster
* @E mail:young * @version myEclipse
* @create time 上午 : :
*/
/
*** 察者模式屬于行為型模式 其意圖是定義對象間的一種一對多的依賴關系
* 當一個對象的狀態發生改變時 所有依賴于它的對象都得到通知并被自動更新
* 在制作系統的過程中 將一個系統分割成一系列相互協作的類有一個常見的副作用
* 需要維護相關對象間的一致性 我們不希望為了維持一致性而使各類緊密耦合
* 因為這樣降低了他們的可充用性 這一個模式的關鍵對象是目標(Subject)和觀察者(Observer)
* 一個目標可以有任意數目的依賴它的觀察者 一旦目標的狀態發生改變 所有的觀察者都得到通知
* 作為對這個通知的響應 每個觀察者都將查詢目標以使其狀態與目標的狀態同步 這種交互也稱為發布 訂閱模式
* 目標是通知的發布者 他發出通知時并不需要知道誰是他的觀察者 可以有任意數據的觀察者訂閱并接收通知
*/
/
*** subject
*目標接口
*/
public interface Subject {
public void addObserver(Observer o);
public void deletObserver(Observer o);
public void notice();
}
//Observer java
package youngmaster model Observer;
/
*** @author youngmaster
* @E mail:young * @version myEclipse
* @create time 上午 : :
*/
/
***觀察者接口
*/
public interface Observer {
public void update();
}
//Teacher java
package youngmaster model Observer;
import java util Vector;
/
*** @author youngmaster
* @E mail:young * @version myEclipse
* @create time 上午 : :
*/
/
***目標接口實現
*/
public class Teacher implements Subject {
private String phone;
@SuppressWarnings( unchecked )
private Vector students;
@SuppressWarnings( unchecked )
public Teacher() {
phone = ;
students = new Vector();
}
@SuppressWarnings( unchecked )
@Override
public void addObserver(Observer o) {
students add(o);
}
@Override
public void deletObserver(Observer o) {
students remove(o);
}
@Override
public void notice() {
for (int i = ; i < students size(); i++) { ((Observer) students get(i)) update();
}
}
public void setPhone(String phone) {
this phone = phone;
notice();
}
public String getPhone() {
return phone;
}
}
//Student java
package youngmaster model Observer;
/
*** @author youngmaster
* @E mail:young * @version myEclipse
* @create time 上午 : :
*/
/
***觀察者接口實現
*/
public class Student implements Observer {
private String name;
private String phone;
private Teacher teacher;
public Student(String name Teacher teacher) { this name = name; this teacher = teacher;
}
public void show() {
System out println( Name: + name + \nTeacher s phone: + phone);
}
@Override
public void update() {
phone = teacher getPhone();
}
}
//Client java
package youngmaster model Observer;
import java util Vector;
/
*** @author youngmaster
* @E mail:young * @version myEclipse
* @create time 上午 : :
*/
/
***測試類
*/
public class Client {
/
*** @param args
*/
@SuppressWarnings( unchecked )
public static void main(String[] args) {
Vector students = new Vector();
Teacher teacher = new Teacher();
for (int i = ; i < ; i++) {
Student student = new Student( student + i teacher); students add(student); teacher addObserver(student);
}
teacher setPhone( );
for (int i = ; i < ; i++)
((Student) students get(i)) show();
System out println( \n============================\n );
teacher setPhone( );
for (int i = ; i < ; i++)
((Student) students get(i)) show();
}
lishixin/Article/program/Java/gj/201311/27566
有哪些JAVA設計模式呢?
1、FACTORY?追MM少不了請吃飯了,麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西,雖然口味有所不同,但不管你帶MM去麥當勞或肯德基,只管向服務員說“來四個雞翅”就行了。麥當勞和肯德基就是生產雞翅的Factory 工廠模式:客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。缺點是當產品修改時,工廠類也要做相應的修改。如:如何創建及如何向客戶端提供。
2、BUILDER?MM最愛聽的就是“我愛你”這句話了,見到不同地方的MM,要能夠用她們的方言跟她說這句話哦,我有一個多種語言翻譯機,上面每種語言都有一個按鍵,見到MM我只要按對應的鍵,它就能夠用相應的語言說出“我愛你”這句話了,國外的MM也可以輕松搞掂,這就是我的“我愛你”builder。(這一定比美軍在伊拉克用的翻譯機好賣) 建造模式:將產品的內部表象和產品的生成過程分割開來,從而使一個建造過程生成具有不同的內部表象的產品對象。建造模式使得產品內部表象可以獨立的變化,客戶不必知道產品內部組成的細節。建造模式可以強制實行一種分步驟進行的建造過程。
3、FACTORY METHOD?請MM去麥當勞吃漢堡,不同的MM有不同的口味,要每個都記住是一件煩人的事情,我一般采用Factory Method模式,帶著MM到服務員那兒,說“要一個漢堡”,具體要什么樣的漢堡呢,讓MM直接跟服務員說就行了。 工廠方法模式:核心工廠類不再負責所
很赞哦!(194)
相关文章
- 01 以下哪項指標是新版帶貨口碑考核指(以下哪些指標是新版帶貨口碑的考核指標)
- 01 以下關于外貿直通車的扣費的說法(什么是外貿直通車?)
- 01 支付寶關注買粉絲給錢(有人加我買粉絲說關注京東買粉絲。給我發30元紅包是不是騙局?)
- 01 支付寶怎么訂閱健康花(鮮花怎么在支付寶上買啊?)
- 01 以下哪些可以作為江蘇的特產年貨(江蘇的特產年貨)
- 01 仿牌外貿收款通道(做外貿,用何種方式收款比較安全?)
- 01 仿李子柒的網紅(最難模仿的三個網紅)
- 01 支付寶支持海外信用卡嗎(支付寶可以綁定國外的銀行卡嗎)
- 01 支付寶怎么關閉訂閱自動續費(支付寶怎么退訂自動續費服務)
- 01 以下屬于社交類媒體渠道的是(新媒體營銷的渠道包括哪些?)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:黑龙江省牡丹江林口县
工作室:小组
Email:[email protected]