行為類模式PK 二 策略模式和狀態模式

2021-08-31 09:48:24 字數 966 閱讀 5571

策略模式和狀態模式在類圖上十分相似。都是高擴充套件性的設計。

兩者最重要的區別是: 1. 策略模式封裝的是不同的演算法,演算法之間沒有互動,以達到演算法可以自由切換的目的。2. 狀態模式封裝的是不同的狀態,以達到狀態切換行為隨之發生改變的目的。

舉乙個場景。人在孩童時期玩耍,成年工作,老年退休。

按照策略模式是3種不同的工作方式,而按照狀態模式,,則是認為人的狀態不同產生了不同的行為結果,這裡的行為相同,都是工作。

public abstract class workalgorithm

public class childwork extends workalgorithm

}public class audltwork extends workalgorithm

}public class oldwork extends workalgorithm

}public class context

public workalgorithm getwork()

public void work()

}public class client

}

狀態模式的實現特點是:

狀態本身持有上下文, 上下文又持有狀態

public abstract class humanstate

public abstract void work();

}public class childstate extends humanstate

}public class adultestate extends humanstate

}public class oldstate extends humanstate

}public class human

public void work()

}public class client

}

行為類模式PK 一 策略模式和命令模式

行為類模式比較多 責任鏈模式,命令模式,直譯器模式,迭代器模式,訪問者模式,備忘錄模式,中介者模式,觀察者模式,狀態模式,策略模式,模板方法。11個 策略模式由上下文封裝具體的策略類,策略類具體執行。命令模式,命令封裝具體的命令接收者,命令接收者負責具體實現。由invoker呼叫命令。以 zip和g...

行為模式 策略模式

策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。需要設計乙個介面,為一系列實現類提供統一的方法,多個實現類實現該介面。設計乙個抽象類,提供輔助函式。抽象策略類介面 public inte ce carfunction 定義乙個策略實現...

狀態模式和策略模式

策略模式 商場 方案,可以有多種 買x返y,z折扣,積分,直降a。一次 活動可以只選擇其中的一種 策略,彼此之間沒有影響。狀態模式 乙個人一天的工作狀態 早上精神百倍,下午還好,晚上很累。早中晚各是一種狀態,但只有三種狀態聯合起來,才能完成 一天的狀態 這件事情,相當於把一天的狀態分成了三個部分了。...