設計模式筆記2:策略模式
1.1 需求
設計一個商場打折計費的軟件,可以實現打折,滿300送100等優惠功能。
1.2 類圖
1.3 實現
我們先把4個計算的類寫出來。
View Code
在寫負責創建對象和調用的CashCoxt類
View Code
最後調用的代碼:
View Code
1.4 總結
我們客戶端的代碼只用到了CashContext類,降低了耦合。 而策略模式的精髓在於:完成同一個功能有不同的算法時,我們把他抽象到父類。然後每一個功能都由對應的子類來實現。 再用一個中間類為我們創建對象,調用方法。
這樣的2點好處:
1、減少了各種算法類之間的耦合。
2、優化了單元測試。
策略模式就是用來封裝算法的,當我們實踐中某一個功能有多種實現的算法。我們就可以考慮使用策略模式。
設計模式筆記2:策略模式
相關推薦
設計模式筆記2:策略模式
把他 客戶端 mage 調用 ges view 優惠 軟件 代碼 1.1 需求 設計一個商場打折計費的軟件,可以實現打折,滿300送100等優惠功能。 1.2 類圖 1.3 實現 我們先把4個計算的類寫出來。 View Code 在寫負責
Head First設計模式 第一章:策略模式
模擬鴨子應用: 繼承: 設計一個遊戲。裡面有各種鴨子。一開始我們建立一個鴨子超類(Suprclass),並讓各種鴨子來繼承這個類。 如: 對所有鴨子通用的方法由超類來實現,對每個鴨子子類不同的方法由各個子類來實現該方法。 這時,如果我們想讓鴨子能飛,我們又在超類
行為類模式PK (二):策略模式和狀態模式
策略模式和狀態模式 策略模式和狀態模式在類圖上十分相似。都是高擴充套件性的設計。 兩者最重要的區別是: 1. 策略模式封裝的是不同的演算法,演算法之間沒有互動,以達到演算法可以自由切換的目的。2. 狀態
Javascript設計模式與開發實踐詳解(二:策略模式) http://www.jianshu.com/p/ef53781f6ef2
的人 思想 ram gis pan pro msg have 改變 上一章我們介紹了單例模式及JavaScript惰性單例模式應用這一次我主要介紹策略模式策略模式是定義一系列的算法,把它們一個個封裝起來,並且讓他們可以互相替換。比方說在現實中很多時候也有很多途徑到達同一個
易學設計模式看書筆記(2) - 簡單工廠模式
原理 pub -m post 繼承 void cto tracking else if 本文摘自易學設計模式一書 一、簡單工廠模式 1.動物管理系統的樣例 public interface Animal{ public void eat(); } publi
設計模式筆記1:簡單工廠模式
1.3 簡單 修改 作用 面向對象 對象 面向 tro 計算 如果想成為一名更優秀的軟件設計師,了解優秀軟件設計的演變過程比學習優秀設計本身更有價值。 1.1 面向對象的好處 通過封裝、繼承多態把程序的耦合度降低,使用設計模式使得程序更加靈活,容易修改,易於復用
JavaScript 面向對象的程序設計記錄筆記2(設計模式)
程序 構造 方法 目標 代碼 構造函數 判斷 .get create 以下為JavaScript高級程序設計 第六章面向對象的程序設計6.2節 創建對象(設計模式部分)讀書記錄。 1)工廠模式: function createPerson(name, age, se
【設計模式】 模式PK:策略模式VS橋梁模式
情況 很多 一個 sub 編寫 場景 多態 文本 gets 1、概述 我們先來看兩種模式的通用類圖。 兩者之間確實很相似。如果把策略模式的環境角色變更為一個抽象類加一個實現類,或者橋梁模式的抽象角色未實現,只有修正抽象化角色,想想看,這兩個類圖有什麽地方不一樣?完全一樣!
PHP設計模式:策略模式
php interface 設計模式 策略模式 步驟1.定義策略接口#UserStrategy.php 用戶策略 <?php namespace celvmoshi; /**用戶策略接口 * Interface UserStategy * @package celvmoshi
【設計模式學習筆記】 之 策略模式
實際類型 clas equals 的確 ron 設計 poj 擴展 打印sql 簡介: 經常網購的可能發現京東、淘寶等電商平臺每到什麽節日都會進行打折,這種打折就是一種策略,策略模式的意思呢,就是把不變的和易變的策略分離開,需要什麽策略時候,把需要的策略傳給執行體,而不是執
設計模式:策略模式
urn gyb 能夠 數據庫 ret 它的 RF 可擴展 優惠 1. 模式的定義 假設現在要實現一個簡化的報價管理,實現如下的功能: 1. 對於普通客戶或者新客戶報全價 2. 對於老客戶報的價格,統一折扣5% 3. 對於大客戶報的價格,統一折扣10% 對不同的人員報不同的價
Java設計模式10: 策略模式
一、什麼是策略模式? 策略模式屬於物件的行為模式。其用意是針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換。策略模式使得演算法可以在不影響到客戶端的情況下發生變化。 策略模式把一個系列的演算法封裝到一個系列的具體策略類裡面,作為一個抽象策略類的子類或
經典設計模式(一):策略模式
版權宣告 本文作者:低調小熊貓 本文連結:https://aodeng.cc/archives/pattern-yi 版權宣告:本文采用知識共享署名 4.0 國際許可協議進行許可。轉載-非商用-非衍生-保持署名,商業轉載請聯絡作者本人qq:2696284032
Spring中常用的設計模式:策略模式
在閻巨集博士的《JAVA與模式》一書中開頭是這樣描述策略(Strategy)模式的: 策略模式屬於物件的行為模式。其用意是針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換。策略模式使得演算法可以在不影響到客戶端的情況下發生變化。
設計模式學習筆記2-單例模式
1 單例模式 1.1 懶漢式(執行緒不安全) public class Singleton { private static Singleton instance; private Sinleton() { } p
設計模式9:策略模式
策略模式 定義:策略模式定義了一系列的演算法,並將每一個演算法封裝起來,而且使他們可以相互替換,讓演算法獨立於使用它的客戶而獨立變化 本質:分離演算法,選擇實現。 看不懂這個神仙一般的定義沒關係,老規矩,先搞個反面例子來引出我們的策略模式 在暑假的第一天,有幾個選擇擺
javascript設計模式二: 策略模式
31 32//為元素同時設定多個屬性方法 33var setAttributes = function(el, attrs){ 34 for(var key in attrs){ 35 el.setAttribute(key, attrs[key]) 36 } 37} 38 39/
設計模式(五):策略模式
介紹 策略設計模式是行為設計模式之一。當我們為特定任務使用多個演算法時,使用策略模式,客戶端決定在執行時使用的實際實現。 策略模式的最佳示例之一是Collections.sort()採用Comparator引數的方法。基於Comparator介面的不同實現,物件將以不同的方式進行排序。 例項 對於我們的示例
Java中的設計模式(五):策略模式
策略設計模式是行為設計模式之一。當我們為特定任務使用多個演算法時,使用策略模式,客戶端決定在執行時使用的實際實現。 策略模式的最佳示例之一是Collections.sort()採用Comparator引數的方法。基於Comparator介面的不同實現,物件將以不同的方式進行排
設計模式對比:策略模式、狀態模式、橋接模式
《策略模式》與《狀態模式》有相同的類結構圖,與《橋接模式》結構非常相似。 目的不同: 策略模式:策略模式的目的是封裝一系列的演算法,使這些演算法能夠相互替換。 狀態模式:封裝狀態對應的行為,並在內部狀態改變的時候改變物件的行為。 橋接模式:分離抽象部分與實現部分,使得它們可以獨立地變化。 狀態模式與策略模