【政策模式】:它定義了算法家族,分别封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到客戶代碼;
政策模式是一種定義一系列的算法的方法,從概念上來看,所有這些算法完成的是相同的工作,隻是實作不同,它可以以相同的方式調用所有的算法,減少了各種算法類與使用算法類之間的耦合。
換句話說,政策模式是用來封裝算法的。
【示例代碼】:
// 算法抽象基類;
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();