设计模式-策略模式(strategy pattern)

名称:策略模式

说说:这件事情必须做,但具体怎么做目前还不确定,那就先留个接口,等确定时再做吧!

动机:

适用性:

参与者:

结果:定义了算法族,分别封装起来,让它们之间可以相互替换

类图:


说明:可以确定类有该行为,但又不能确定该行为的具体实现(存在多种实现/策略,如鸟类都有拍翅膀的行为,但有些可以飞起来,有些则不能),不防先给该行为预留一个接口,具体的选择哪个实现方式/策略,由具体的对象决定。

demo c#:

namespace strategyPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            context con = new context();

            iStrategy strategy1 = new strategy1();
            con.selectStrategy(strategy1);
            con.doit();

            iStrategy strategy2 = new strategy2();
            con.selectStrategy(strategy2);
            con.doit();

            Console.Read();
        }
    }

    // main code 
    interface iStrategy {
        void handle();
    }
    class strategy1 : iStrategy {
        public void handle() {
            Console.WriteLine("now is using strategy1");
        }
    }
    class strategy2 : iStrategy{
        public void handle(){
            Console.WriteLine("now is using strategy2");
        }
    }
    class context {
        iStrategy _strategy;
        public void selectStrategy(iStrategy s){
            this._strategy = s;
        }
        public void doit() {
            this._strategy.handle();
        }
        public void doSthOther() { }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值