亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

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

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

Strategy模式

 

起源

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

目的

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

動機

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

應用

Implementation

下例中的對信用卡進行月利率進行計算。Strategy模式通過充一的抽象類TfinanzeCharge封裝、訪問接口并擔供不同的算法來進行月利率計算。TregularCharge、TPReferredCharge為信用卡的月利率計算封裝了不同的具體算法
TmonthlyCharge實現了TcontextCharge接口并配置了不同的策略對象。TconntextCharge成為客戶對象與策略對象的中場發動機,這樣有助于感輕客戶對象與策略/對象的依賴性。
 
 
    // 策略接口 (抽象類)
  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作為客戶對象與策略對象的中場發動機,并通過在它的構造器傳遞一個具體的利率計算實例進行設置。
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+程序的一個錯誤

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

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
激情av一区二区| 亚洲欧美综合另类中字| 日韩黄色高清视频| 久久久精品日本| 中文字幕日韩av电影| 黄色精品在线看| 国产一区二区黑人欧美xxxx| 91理论片午午论夜理片久久| 欧美国产日韩二区| 欧美视频在线免费看| 国产欧美va欧美va香蕉在线| 亚洲天堂av网| 精品视频www| 精品二区三区线观看| 日韩成人在线网站| 国产a∨精品一区二区三区不卡| 欧美日韩亚洲国产一区| 清纯唯美亚洲综合| 国模精品视频一区二区三区| 成人免费高清完整版在线观看| 国产自产女人91一区在线观看| 久久天天躁狠狠躁夜夜av| 欧美xxxx做受欧美.88| 国产精品777| 亚洲性视频网址| 96精品视频在线| 欧美精品激情在线观看| 亚洲字幕一区二区| 国产在线精品播放| 中文字幕国产亚洲| 亚洲淫片在线视频| 91免费在线视频| 中文字幕不卡在线视频极品| 黑人欧美xxxx| 亚洲欧美日韩国产中文| 欧美精品videosex极品1| 国产亚洲欧美日韩精品| 欧美日本国产在线| 国产丝袜精品第一页| 欧美丰满片xxx777| 精品国产乱码久久久久久天美| 久久综合国产精品台湾中文娱乐网| 日韩电影第一页| 欧美黑人性生活视频| 97在线视频免费| 少妇av一区二区三区| 国产精品pans私拍| 亚洲第一网站男人都懂| 亚洲高清一二三区| 欧美精品久久久久久久免费观看| 亚洲性线免费观看视频成熟| 国产精品美女呻吟| 国内精品久久久久伊人av| 在线亚洲男人天堂| 国产精品igao视频| 海角国产乱辈乱精品视频| 欧美精品在线网站| 国产精品第一区| 国产香蕉一区二区三区在线视频| 久久人91精品久久久久久不卡| 17婷婷久久www| 精品国产91久久久久久| 国产精品日日摸夜夜添夜夜av| 午夜精品福利视频| 亚洲欧美另类在线观看| 欧美性极品xxxx做受| 久久在线免费视频| 亚洲精品欧美极品| 欧美性猛交xxxx乱大交3| 夜夜嗨av一区二区三区免费区| 亚洲人成电影在线观看天堂色| 奇米4444一区二区三区| 日韩激情视频在线播放| 亚洲人精选亚洲人成在线| 久久精视频免费在线久久完整在线看| 岛国av一区二区三区| 久久影院资源网| 日韩第一页在线| 草民午夜欧美限制a级福利片| 日韩欧美在线观看| xxxx欧美18另类的高清| 亚洲午夜未满十八勿入免费观看全集| 成人国产精品日本在线| 成人免费视频网| 亚洲网站在线观看| 欧美一性一乱一交一视频| 91精品国产综合久久久久久蜜臀| 色哟哟网站入口亚洲精品| 午夜精品久久久久久久99热| 久久久国产成人精品| 日韩av观看网址| 国产欧美一区二区白浆黑人| 日本一区二三区好的精华液| 欧美插天视频在线播放| 97在线视频国产| 在线色欧美三级视频| 精品久久久久久| 欧美韩日一区二区| 国产精品综合久久久| 午夜精品福利在线观看| 久久久久久久久国产精品| 亚洲日本aⅴ片在线观看香蕉| 国内精品伊人久久| 国产成人精品免高潮费视频| 日韩在线免费av| 九九热99久久久国产盗摄| 国产日韩欧美影视| 97超级碰碰碰| 2018日韩中文字幕| 日韩精品免费在线播放| 日韩亚洲成人av在线| 国产精品视频一区国模私拍| 久久久国产精彩视频美女艺术照福利| 日韩电影大全免费观看2023年上| 亚洲欧美中文日韩在线v日本| 亚洲一区二区三| 亚洲成人网av| 国产欧美精品一区二区| 91精品久久久久久久久久另类| 欧美日本黄视频| 亚洲精品视频中文字幕| 欧美精品videosex性欧美| 久久中文字幕一区| 国产精品成熟老女人| 欧美美女15p| 亚洲综合一区二区不卡| 久久久久久久久久久免费精品| 色777狠狠综合秋免鲁丝| 欧美性感美女h网站在线观看免费| 欧美极品少妇xxxxx| 欧美一级淫片videoshd| 欧美精品生活片| 国产精品成av人在线视午夜片| 日韩专区在线播放| 成人黄色片在线| 日韩久久精品电影| 国语自产精品视频在线看抢先版图片| 亚洲免费视频一区二区| 欧美丝袜一区二区| 中文字幕日韩在线视频| 亚洲一区av在线播放| 欧洲美女免费图片一区| 91久久久久久国产精品| 亚洲精品动漫100p| 国模精品系列视频| 日韩在线视频网站| 国产成人精品久久久| 欧美日韩国产二区| 日韩av有码在线| 国产精品久久久久999| 亚洲电影在线看| 国产精品av免费在线观看| 国产精品永久免费视频| 狠狠色香婷婷久久亚洲精品| 欧美日韩美女视频| 一区二区三区回区在观看免费视频| 亚洲精品国产精品乱码不99按摩| 国产女同一区二区| 欧美野外猛男的大粗鳮| 久久久久久久久亚洲| 国产激情久久久久| 国产欧美久久久久久| 亚洲香蕉在线观看| 亚洲一区二区三区毛片|