天天看點

政策模式

    【政策模式】:它定義了算法家族,分别封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到客戶代碼;

政策模式是一種定義一系列的算法的方法,從概念上來看,所有這些算法完成的是相同的工作,隻是實作不同,它可以以相同的方式調用所有的算法,減少了各種算法類與使用算法類之間的耦合。

換句話說,政策模式是用來封裝算法的。

政策模式

【示例代碼】:

// 算法抽象基類;

using system;

abstract class strategy

{

    public abstract void algorithminterface();

}

//實際實作算法a

class concretestrategya : strategy

    public override void algorithminterface()

    {

        console.writeline("算法a實作");

    }

//實際實作算法b

class concretestrategyb : strategy

        console.writeline("算法b實作");

//實際實作算法c

class concretestrategyc : strategy

        console.writeline("算法c實作");

// context 上下文,用一個concretestrategy來配置,維護一個對strategy對象的引用;

class context

    strategy strategy;

    public context(strategy strategy)

        this.strategy = strategy;

    //上下文接口;

    public void contextinterface()

        strategy.algorithminterface();

class app

    static void main()

        context context;

        context = new context(new concretestrategya());

        context.contextinterface();

        context = new context(new concretestrategyb());

        context = new context(new concretestrategyc());

        console.read();

執行個體:商場促銷

政策模式

【實作代碼】

abstract class cashsuper

public abstract void acceptcash();

class cashnormal:cashsuper

public override void acceptcash()

console.writeline("sells normal!");

class cashrebate:cashsuper

console.writeline("rebate selling!");

class cashreturn:cashsuper

console.writeline("sells return!");

class cashcontext

private cashsuper cashsuper;

public cashcontext(cashsuper cashsuper)

this.cashsuper=cashsuper;

public void getresult()

cashsuper.acceptcash();

static void main()

cashcontext ch=new cashcontext(new cashnormal());

ch.getresult();

cashcontext ch2=new cashcontext(new cashrebate());

ch2.getresult();

cashcontext ch3=new cashcontext(new cashreturn());

ch3.getresult();

console.read();

繼續閱讀