Strategy模式" />

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

設計模式、用Delphi實現---->Strategy模式

2019-11-18 18:44:47
字體:
來源:轉載
供稿:網友

Strategy模式

 

起源

Delphi的STRATEGY模式是在STRATEGY的基礎上進行了擴展。更多STRATEGY模式的資料請參閱 《設計模式208頁》

目的

定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶面變化。

動機

?         由于需要可以動態(tài)的變換不同的策略。
?         更好的封裝多個行為與算法結構,而不讓客戶程序直接干擾
?         通過相關的條件語句選擇正確的行為方法。
Template方法使用繼承來變換部分算法。Strategies則使用代理和組合來變換所有的算法并支持動態(tài)變換。以后,將使用context對象在運行期動態(tài)的分配具體的算法。同樣,通過使用context對象,客戶類將從依賴的算法接口中分離出來,通過context對象可以提供更多的泛化接口。同樣意義的是,通過contextstrategy接口可以在將來設計并提供全系統的相關算法來實現具體的應用而無需改變接口。
Strategies同樣讓你您創(chuàng)建單一的、間單的、易維護的類框架。類框架依賴于繼承。
 
 

應用

Implementation

下例中的對信用卡進行月利率進行計算。Strategy模式通過充一的抽象類TfinanzeCharge封裝、訪問接口并擔供不同的算法來進行月利率計算。TregularCharge、TPReferredCharge為信用卡的月利率計算封裝了不同的具體算法
TmonthlyCharge實現了TcontextCharge接口并配置了不同的策略對象。TconntextCharge成為客戶對象與策略對象的中場發(fā)動機,這樣有助于感輕客戶對象與策略/對象的依賴性。
 
 
    // 策略接口 (抽象類)
  TFinanzeCharge = class
  public
      // 返回計算的結果
    function getCharge(const Balance: double): double; virtual; abstract;
  end;
 
    // 具體策略
  TRegularCharge = class(TFinanzeCharge)
  public
    function getCharge(const Balance: double): double; override;
  end;
 
    //具體策略
  TPreferredCharge = class(TFinanzeCharge)
  public
     function getCharge(const Balance: double): double; override;
  end;
 
客戶程序依賴上下文接口來調度指定的策略。無論如何,因為上下文接口是為客戶程序而產生的,客戶程序必需知道可用的策略/對象。如果上下文無法返回一個有效的實例,可選擇選擇默認策略的方法實現。
 
 
     // 上下文接口
  TChargeContext = class
  public
    function ComputeCharges(const Balance: double): double; virtual; abstract;
  end;
 
//具體上下文
TmonthlyCharges作為客戶對象與策略對象的中場發(fā)動機,并通過在它的構造器傳遞一個具體的利率計算實例進行設置。
This class acts as a mediator between the client and the strategy classes, and is configured by using composition and passing an instance of a concrete finance charge in its constructor.
 
  TMonthlyCharges = class(TChargeContext)
  private
    FFinanzeCharge: TFinanzeCharge;
  public
// 客戶程序訪問的接口
    function ComputeCharges(const Balance: double): double; override;
    // constructor configures the context object
    constructor Create(aFinanzeCharge: TFinanzeCharge); virtual;
    destructor Destroy; override;
  end;
 
---
implementation
 
// TRegularCharge
function TRegularCharge.getCharge(const Balance: double): double;
begin
  result := Balance * (REG_RATE / 12);
end;
 
// TPreferredCharge
function TPreferredCharge.getCharge(const Balance: double): double;
begin
   // this could be a complex algorithm that takes into account the
   // credit card holder’s buying patterns and reward points accumulated.
  result := Balance * (PREFERRED_RATE / 12);
end;
 
 
// Concrete Context
// TMonthlyCharges
constructor TMonthlyCharges.Create(aFinanzeCharge: TFinanzeCharge);
begin
  inherited Create;
    // aFinanzeCharge configures the context object
    // this class takes ownership of aFinanzeCharge (will destroy it)
  FFinanzeCharge := aFinanzeCharge;
end;
 
destructor TMonthlyCharges.Destroy;
begin
  FFinanzeCharge.Free;
  inherited Destroy;
end;
 
function TMonthlyCharges.ComputeCharges(const Balance: double): double;
begin
  result := FFinanzeCharge.getCharge(Balance);
end;
 

Delphi實例


上一篇:DELPHI下的多線程程序設計(1)

下一篇:排除Delphi5中編寫COM+程序的一個錯誤

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线成人综合色一区| av中文网站| 最近中文字幕大全中文字幕免费 | 在线中文av| 国产精品国产国产aⅴ| 国产小视频在线高清播放| 免费的黄网站在线观看| 中文字幕在线免费视频| 精品一区二区三区在线成人| 18激情网站| 97高清视频| av在线第一页| 国产黄色在线免费观看| 在线观看的网站你懂的| 丁香婷婷激情| 国产精品被窝福利一区 | www黄在线观看| 日本亚洲精品| 国产特级嫩嫩嫩bbb| 天天艹天天操| 日本中文字幕在线2020| 国产精品欧美色图| 久久久久久日本一区99| 国产偷窥洗澡视频| 久久久久久五月天久久久久久久久| 中文字幕在线观看av| 中文字幕4区| 国产色在线 com| 任你操视频在线观看| 18被视频免费观看视频| 亚洲v片在线观看| 国产黄色在线免费观看| 另类高清dbsm日本tvav| 中文字幕av高清| 国产黄色免费看| 国产网红在线观看| 国产乱人视频免费播放| 成年网在线观看免费观看网址| 精品国产免费第一区二区| 国产精品久久久久白浆| 国产三级香港三韩国三级| 欧美96在线| √天堂资源中文www| 18激情网站| 精品网站www| 亚洲国产成人综合| 中文字幕2019第三页| 2020国产在线视频| 91亚洲欧美| 日本h片在线观看| 久久久久久77777| 五月婷婷在线观看| 最新天堂资源在线| 国产香蕉尹人视频在线| 国产探花视频在线观看| 国产三级视频在线看| 精品卡一卡卡2卡3网站| 午夜在线不卡| 国产免费视频| 国内精品不卡| 国产在线高潮| 中文字幕av高清在线观看| 精品av中文字幕在线毛片| 尤物在线精品视频| 国内精品一区视频| 国产经典自拍视频在线观看| 国产99在线|亚洲| 亚洲电影视频在线| 91超碰免费在线| 91激情在线| 最新亚洲精品国自产在线观看| 国产福利图片| 国自产拍在线网站网址视频| 国产黄色片中文字幕| 午夜羞羞小视频在线观看| 国产美女自拍视频| av免费在线观| 麻豆av在线| 伊人222成人综合网| 丁香综合在线| 男人操女人免费网站| 2018中文字幕在线观看| 九九热视频在线观看| 亚洲欧美综合乱码精品成人网 | 97国产在线| 99视频在线观看地址| 国产高清一区二区三区视频| 国产成人精品久久一区二区小说| 天天插天天干| 91最新在线| 国产图片综合| 国产羞羞视频在线观看| 国产在线你懂得| 久热国产在线视频| 国产福利免费观看| 国产色婷婷在线| 国产午夜精品一区理论片| 国产麻豆视频网站| 丁香视频五月| 中文字幕有码在线视频| 日本久久网站| 永久免费av网站| 国产三级在线播放| 国产福利图片| 在线国产1区| 国产www在线观看| 精品国产免费第一区二区| 在线视频婷婷| 亚洲综合在线网| www.超级碰| 九九99精品| 尤物视频在线看| 国产二区在线播放| 在线成人综合色一区| 午夜在线视频| 九九精品视频在线观看九九| 国产变态拳头交视频一区二区| 精品av中文字幕在线毛片| 992tv在线观看在线播放| 午夜在线视频播放| 国产亚洲精品久久久网站好莱| 国产传媒在线播放| 亚洲男人的天堂成人| 麻豆av在线| 国产成人精品久久一区二区小说| 日本天堂影院在线视频| 国产精品自拍在线观看| 97一区二区三区| 久久久久久77777| 中文av资源在线| 男女羞羞视频在线观看| 中文字幕在线看精品乱码| 在线国产福利网站| 最新国产在线| 黄色毛片在线看| 国产网红在线观看| 黄色国产网站在线播放| 精精国产xxxx视频在线中文版| 亚洲网站视频在线观看| 国产女呦网站| 久久精品免视着国产成人| 91资源在线观看| 国产美女在线播放| av人人综合网| 精品视频在线一区二区| 国产特级嫩嫩嫩bbb| 国产中文字幕在线播放| 国产激情视频网址| 国产一级在线观看www色| 久久综合精品视频| eeuss影院www在线播放| 2019年中文字幕| 国产成人精品自线拍| 四虎精品视频| 国产福利热线视频| 国产精品免费91| 国产成人亚洲综合小说区| 国产精品亚洲色图| 丁香视频免费观看| 国产中文在线视频| 天天av天天爽| 国产污污在线观看| 午夜在线小视频| 成在线人视频免费视频| 九九热在线视频| 在线观看wwww| 99爱在线观看| 日本a级黄色| 国产专区在线| 日本三级在线视频| 99久久99久久免费精品小说| 国产福利免费观看| 伊人中文字幕在线| 欧美日韩国产亚洲沙发| 超碰在线国产| 国产精美视频| www.jizz在线观看| 国产卡1卡2卡三卡在线| 国产精品冒白浆免费视频| 精品国产一区二区三区不卡在线 | 免费av在线| 天天操天天曰| 2018狠狠干| 九九精品视频在线观看九九| 黄色电影网站在线观看| 国产三区四区在线观看| gogo高清在线播放免费| 尤物视频网站在线观看| 亚洲欧美精品中文第三| 国产乱人视频免费播放| 亚洲成人av高清| 中文字幕专区| 伊人影院在线视频| 最新av免费看| 久久香蕉av| 天天草天天干| 国产福利一区二区在线精品| 免费99热在线观看| av二区三区| 国产jizz|