提高班之策略模式

      

      最近在看设计模式,刚从工厂模式中学了点技术,这不又要学

 

点策略。

 

  “初生牛犊不怕虎”,刚学习了点技术,就不知天高地厚了,

 

乍一看策略,这不也没什么嘛!跟我从工厂里面学习到的技术也

 

差不多嘛,其实不然。 

  

   敲了几遍代码,一直在想怎么用一种更加简单易懂的方式来形

 

容这种模式呢?只有这样才能加深对这种模式的理解。下面就拿

 

提高班“开刀”吧!

 

   大家众所周知,在提高班要学习很多门课程,都是米老师一个

 

人讲的,如果米老师不懂的“策略”的话,怎么能够对付我们这

 

群调皮的学生呢! 看下面这个例子。

 

//多门课程的抽象
    abstract class classes
    {
        public abstract void teaching();
    }
   

    class Match:classes
    {
        public override void teaching()
        {
            Console.WriteLine("教语文");
        }
    }


    class English : classes
    {
        public override void teaching()
        {
            Console.WriteLine("教英语");
        }

    }

    class 米老师
    {
        classes teachingclass;

        //告诉要教授的内容
        public 米老师(classes teachingclass)
        {
            this.teachingclass = teachingclass;
        }


        //自己的方法,调用其算法的方法
        public ovid teach()
        {
            teachingclass.teaching();
        }



    }
       

    class student
    {
          //学生端
    static void Main(string [] args)
        {
            米老师 师哥;
            师哥=new 米老师(new English );
            师哥.teach();

            
            米老师 师姐;
            师姐=new 米老师(new Match );
            师姐.teach();


        }
    }
  


 

   

   大家或许从中发现什么了,米老师在这里充当的角色就相当

 

于那些课程的引用,或者说是课程的接口。

  

   那些课程封装到一块,运用继承的方式来继续扩充课程的广

 

度,比如我可以在添加语文,地理等,而米老师的角色就相当于

 

这些课堂的一个另外的角色,就连教授方法也是调用别人的。那

 

么当学生在有需求,想学习知识的时候,只需要告诉米老师,然

 

后米老师通过实例化,然后派来师哥师姐来帮助我们。这就是米

 

老师的教学方法,不仅对增长我们的见识,同时也让师哥师姐们

 

得到了历练,这就是米老师的“策略”。

 

   再者感觉策略模式还有点相似一个接口,上面的课程经过封装

 

后,通过老师这个接口,当学生有需求的时候,直接通过这个接

 

口来调用即可。

 

   另外策略模式又让我想起了C#中的委托,课程这个类委托给了

 

老师,讲课的时候,在通过这个委托调用即可。

 

   

   两种模式的对比

   共性:

        两者都是把所有的东西封装打包,然后引入第三方,那

 

么这样的好处就是起到了分离的功能,不影响对方的扩展,增加

 

了灵活性。

 

   不同点:

        简单工厂模式是根据业务的扩展生成了一个符合需求的

 

对象,而策略模式相当于业务的副本,通过业务延伸出来的这个

 

副本的接口就可以了解到内部。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值