設計模式二

2022-03-01 23:14:07 字數 2843 閱讀 9295

接設計模式一

當然這個receiver類是需要外界去呼叫,我們就需要乙個執行類command,這個是具體執行類,在這個裡面我們需要管理receiver,外界通過這個去呼叫receiver,這個command類就相當於經紀人。最後乙個類就是invoker,這個類是乙個中心,因為我們的需求是多變的,所以我們的receiver與command將會非常多的,那麼我們就將設定乙個中心管理類來一起去管理他們,這個類就是invoker,他負責我們去執行什麼命令,去呼叫什麼方法。

網上的這句話非常好,一起開看看。命令模式的本質就是對命令進行分裝,將傳送命令與執行命令的責任分開。每乙個命令都是要給操:請求的乙個傳送請求,要執行要給操作;接受的一方都到請求操作。請求方和接收方獨立開來,使得請求的一方不必知道接收請求乙個的介面,更不必知道請求是怎麼被接收的。以及操作是否被執行,何時被執行,以及是怎麼被執行的。這裡我們要知道,在軟體工程中乙個非常重要的思想就是分裝的思想,將方法就行封裝,外界不必知道它的構成,外界就是乙個呼叫者,他只需要值傳送命令就好了,這樣功能就比較單一,這個就符合單一職責原則,**耦合性性就大大降低。

命令模式使請求本身成為乙個物件,這個物件和其他物件乙個可以被儲存和傳遞。命令模式的關鍵在於引入了抽象命令介面,且傳送者針對抽象命令介面程式設計,只有實現了抽象命令介面的具體命令才能與接收者相關聯。

命令模式的優點:解除了請求者與實現者之間的耦合,降低了系統的耦合度。對請求排隊或記錄請求日誌,支援撤銷操作。可以容易的設計乙個組合命令。新命令可以容易的加入到系統中。總之一句話就是一些都是為了高內聚,低耦合。我們在學設計模式的時候,我們沒有必要一定去糾結這個模式和那個模式

十二 責任鏈模式

這個模式我們還是比較熟悉的,因為在以前的狼人殺課程中我們是已經學過的。責任鏈模式是物件的行為模式。使多個物件都有機會處理請求,從而避免請求的傳送者和接收者直接的耦合關係。將這些物件練成一條鏈,沿著這天鏈傳遞請求,直到有乙個物件處理它為止。責任鏈模式強調額是每乙個物件其對下家的引用來組成一條鏈,利用這種方式將傳送者和接受者解耦

/// /// 抽象處理角色

///

public abstract class handler

public void setsuccessor(handler successor)

}#region 鍊錶子類

public class concretehandler1 : handler

else}}

public class concretehandler2 : handler

else}}

#endregion

public class concretehandlern : handler

}class program

}

這種模式首先我們應該建立乙個抽象基類,因為這個模式首先是乙個鏈條,這就說明了一點,鏈條上的所有都是具有不同需求但是基本結構都一樣的類,他們應該是繼承同乙個父親。在這個基類中我們寫出所有的方法,讓子類去實現。子類去實現方法handlerrequest(),這個方法就是鏈結的關鍵,其實本質就是在方法中呼叫另乙個類,如果不滿足就是呼叫下乙個。用乙個更形象一點的說法就是。我們在每乙個類中都宣告乙個空結點變數,handler1.setsuccessor(handler2);handler2.setsuccessor(handlern);就像上面的一樣,對類中的節點變數進行賦值,我們在 類中使用這個getsuccessor().handlerrequest(condition);就相當於在自身類中去呼叫得到結點的方法,多個結點相互呼叫,這樣就像乙個鏈條一樣,而其中傳遞的就是變數,變數在每乙個結點類的方法中進行運算如果滿足就終止;如果不滿足就接著下乙個。

十三  觀察者模式

觀察者模式最重要的就是訂閱機制。觀察者是訂閱者,我只要發出新的訊息,然後這個訊息就會自動去通知所有的訂閱者。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 設計模式_觀察者模式

set }

public string name

set

}public subject(string name, string strintelligence)

public event delob delpubgob;//當ob隊友報出敵情時候的事件

public void pubgsay()

}//觀察者抽象類

public abstract class observer

set

}abstract protected void notfied(subject subject, eventargs e);

public observer(subject subject, string name)

}//活著的隊友

public class teammatealive : observer

protected override void notfied(subject subject, eventargs e)

:收到", this.name);}}

//死亡的隊友

public class dieteammates : subject

:", this.name, this.strintelligence);}}

class program}}

設計模式(二) 原型設計模式

官方定義 使用原型例項指定建立物件的種類,並通過複製這個原型建立新的物件 通俗的講就是根據乙個原型建立乙個新的物件 建立的方式實質就是拷貝原型自己 而且不需要知道新物件建立的細節 1 某些物件組合起來特別複雜,而重新建立費時又費力,此時通過拷貝能達到其目的 通過 說明問題 1 定義乙個協議 impo...

設計模式 二

php物件導向設計模式中,工廠模式,從字面中就能夠以理解為,工廠模式就是在不改變原來 的結構的基礎上,依據需求的新增類定義去完畢 php header content type text html charset utf8 php設計模式 二 工廠模式 定義介面db類 inte ce db clas...

設計模式(二)

工廠模式 factory 允許你在 執行時例項化物件。它之所以被稱為工廠模式是因為它負責 生產 物件。工廠方法的引數是 你要生成的物件對應的類名稱。抽象基類 類中定義抽象一些方法,用以在子類中實現 繼承自抽象基類的子類 實現基類中的抽象方法 工廠類 用以例項化所有相對應的子類class exampl...