谁能解释解释多态和简单工厂,虽然课上老师讲了,但是很多东西还是不理解...抽象类的应用,还有简单工厂的应用...

解决方案 »

  1.   

    比如现在有个(车)父类,然后有小汽车、卡车、赛车,这三个类继承了这个父类
    然后使用简单工厂的模式根据你输入的值,进行判断到底这个父类要NEW哪一个子类,最后由父类带出
    就这么简单
      

  2.   


        public class CarS
        {
            public virtual void Say()
            {
                Console.WriteLine("");
            }
        }    public class car : CarS
        {
            public override void  Say()
            {
                Console.WriteLine("I am a Car");
            }
        }    public class BigCar : CarS
        {
            public override void  Say()
            {
                Console.WriteLine("I am a BigCar");
            }
        }    public class SimpleFactory
        {
            public static CarS Choose(string type)
            {
                CarS ss = null;
                switch (type)
                {
                    case "小汽车":
                        ss = new car();
                        break;
                    case "大汽车":
                        ss = new BigCar();
                        break;
                }
                return ss;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Programm Started:");
                Console.WriteLine("---------------------------------------");
                Console.WriteLine("");            string strClass = "小汽车";
                CarS myCar = SimpleFactory.Choose(strClass);
                myCar.Say();
                Console.WriteLine("");
                Console.WriteLine("---------------------------------------");
            }
        }
      

  3.   

     面向对象三大特性概述[封装、继承、多态]封装:每个对象都包括自己进行操作所需要的所有信息,而不依赖于其他对象来完成自己的操作。这样的方法和属性通过类的实例来实现。  好处:良好的封装可以降低耦合度;类的内部可以自由修改;类具有对外的清晰接口。继承:IS-A的关系。A is-a B:A是B,A可以继承B。A是B的一个特例,特殊化,A又可以具备自己独有的个性。三个点:  1.子类拥有父类非private的属性和功能(父类的构造函数例外,可以用base关键字访问,base代表着父类);  2.子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;  3.子类可以以自己的方式重写父类的功能。  缺点:父类变,子类不得不变,父子是一种强耦合的关系。多态:不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。三个注意点:  1.子类以父类的身份出现;  2.子类在运行时以自己的方式实现;  3.子类以父类的身份出现时,子类特有的属性和方法不可以使用。  为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的(virtual),子类可以选择使用override将父类的实现替换为自己的实现,这就是多态。  原理:当方法被调用时,无论是否转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。即,虚方法是按照运行时类型而非编译时类型进行动态绑定调用的。
      

  4.   

    简单工厂 也叫静态工厂:涉及到工厂角色,抽象产品,以及具体产品角色等。 
    一般情况下就是根据参数数据返回一个适当的子类,然后用基类或接口引用具体的对象,而不用考虑该实际对象的产生过程.多态实现
    http://topic.csdn.net/u/20091017/21/95c1915d-2903-4eb0-903a-9b705efbf246.html?81529