策略模式

来源:互联网 发布:win764安装2005数据库 编辑:程序博客网 时间:2024/06/02 22:55
    • 分析:        一.日前条件分析:               (1)多种鸭子               (2)都会游泳,都会叫.        二.设计分析:               (1)游泳,呱呱叫.(方法)               (2)不同的鸭子.(字符串表示种类)                 问题:字符串能够表达足够的信息吗?               (3)不同种类鸭子的外观不同. 问题:     1 建类的动机是什么(是什么原因让你想建类)?          类 = 一类东西.定义的类确实能够表示一类东西.如果没有必要建立这个类,最好不要建!(如不是非建不可,就不建!)        如本例:               (1)多种鸭子.               (2)都会游泳,都会叫.               此条件还不够建立多个类.(不到非不可,就不建!避免增大复杂度)               (3)每个鸭子外观不同.               第3个条件分析:     (1)如果每个鸭子都能够用相同的字段来表示,就建成一个类足够了.                             (2)如果不同类的鸭子的外观部分的字段不同.这就必须建成多个类的形式. 解决方案:        1建一个类?(却有了不该有的)        2每个都建一个类?(相同的东西在代码上重复)        3继承方法.   总结:     一.建类的动力.          1 要有足够的原因来支撑,非得建类不行,才建类.(能不建,则不建==存在的强大理由=不这样做不行)          2 它确实表示一类东西.          3 建子类的原因:一个类不能表达所有的东西.各个东西既有相同的,又有不同的.          说明:            所以,上面的鸭子类,一个类不能表达所有种类的鸭子,因为不同种类的鸭子,确实有不同的东西,用一个表达不全.   public class Duck {        public void Swim()        {               //实现它,所有的鸭子都一样.        }        public void Quack()        {               //子类不会覆盖,就去实现它.        }        public virtual void Display();        //因为每个鸭子都有,但又不同. }   public class RedHeadDuck:Duck {        public override void Display()        {} } public class MallardDuck:Duck {        public override void Display()        {} } public class OthersDuck:Duck {        public override void Display()        {} }                         
原创粉丝点击