首页 > 其他 > 详细

提高班之策略模式

时间:2014-03-10 01:48:12      阅读:521      评论:0      收藏:0      [点我收藏+]

      

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

 

点策略。

 

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

 

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

 

差不多嘛,其实不然。 

  

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

 

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

 

提高班“开刀”吧!

 

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

 

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

 

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

 

//多门课程的抽象
    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#中的委托,课程这个类委托给了

 

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

 

   

   两种模式的对比

   共性:

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

 

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

 

了灵活性。

 

   不同点:

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

 

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

 

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

 

 

提高班之策略模式,布布扣,bubuko.com

提高班之策略模式

原文:http://blog.csdn.net/luckyzhoustar/article/details/20858319

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!