欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java設(shè)計(jì)模式之策略模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)

定義:定義一組算法,將每個(gè)算法都封裝起來(lái),并且使他們之間可以互換。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無(wú)止境。

類型:行為類模式

類圖:

       策略模式是對(duì)算法的封裝,把一系列的算法分別封裝到對(duì)應(yīng)的類中,并且這些類實(shí)現(xiàn)相同的接口,相互之間可以替換。在前面說(shuō)過(guò)的行為類模式中,有一種模式也是關(guān)注對(duì)算法的封裝——模版方法模式,對(duì)照類圖可以看到,策略模式與模版方法模式的區(qū)別僅僅是多了一個(gè)單獨(dú)的封裝類Context,它與模版方法模式的區(qū)別在于:在模版方法模式中,調(diào)用算法的主體在抽象的父類中,而在策略模式中,調(diào)用算法的主體則是封裝到了封裝類Context中,抽象策略Strategy一般是一個(gè)接口,目的只是為了定義規(guī)范,里面一般不包含邏輯。其實(shí),這只是通用實(shí)現(xiàn),而在實(shí)際編程中,因?yàn)楦鱾€(gè)具體策略實(shí)現(xiàn)類之間難免存在一些相同的邏輯,為了避免重復(fù)的代碼,我們常常使用抽象類來(lái)?yè)?dān)任Strategy的角色,在里面封裝公共的代碼,因此,在很多應(yīng)用的場(chǎng)景中,在策略模式中一般會(huì)看到模版方法模式的影子。


策略模式的結(jié)構(gòu)

  • 封裝類:也叫上下文,對(duì)策略進(jìn)行二次封裝,目的是避免高層模塊對(duì)策略的直接調(diào)用。
  • 抽象策略:通常情況下為一個(gè)接口,當(dāng)各個(gè)實(shí)現(xiàn)類中存在著重復(fù)的邏輯時(shí),則使用抽象類來(lái)封裝這部分公共的代碼,此時(shí),策略模式看上去更像是模版方法模式。
  • 具體策略:具體策略角色通常由一組封裝了算法的類來(lái)?yè)?dān)任,這些類之間可以根據(jù)需要自由替換。

策略模式代碼實(shí)現(xiàn)


interface IStrategy { 
  public void doSomething(); 
} 
class ConcreteStrategy1 implements IStrategy { 
  public void doSomething() { 
    System.out.println("具體策略1"); 
  } 
} 
class ConcreteStrategy2 implements IStrategy { 
  public void doSomething() { 
    System.out.println("具體策略2"); 
  } 
} 
class Context { 
  private IStrategy strategy; 
  public Context(IStrategy strategy){ 
    this.strategy = strategy; 
  } 
  public void execute(){ 
    strategy.doSomething(); 
  } 
} 
public class Client { 
  public static void main(String[] args){ 
    Context context; 
    System.out.println("-----執(zhí)行策略1-----"); 
    context = new Context(new ConcreteStrategy1()); 
    context.execute(); 
    System.out.println("-----執(zhí)行策略2-----"); 
    context = new Context(new ConcreteStrategy2()); 
    context.execute(); 
  } 
} 

分享標(biāo)題:Java設(shè)計(jì)模式之策略模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)
文章路徑:http://www.chinadenli.net/article0/iehoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化微信公眾號(hào)ChatGPT小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)