简单工厂,工厂方法,抽象工厂的区别与联系

一:简单工厂

模型:

C:\Users\Administrator\Desktop

案例:

namespace 简单工厂
{
    class Program
    {
        static void Main(string[] args)
        {
            Factory f = new Factory();
            f.N1("大众");
            f.N2("保时捷");
            Console.Read();
        }
        //1.属于创建型模型;
        //2.静态类;
        //3.拥有一个工厂方法(create),接受一个参数,创建不同的产品;
        //4.可以生产同一个产品同一个等级结构中的任意产品;
        //优点:可以实例化任何类;
        //缺点:负担太重,代码量太大;无法遵守开闭原则;
        //场景:知道传入工厂类的参数,对创建对象(逻辑)不关心;
        //实例:Java中的JDBC操作数据库
        class Car
        {            
            public string Name { get; set; }//汽车名称
        }
        class Bug
        {
            public string Name { get; set; }
        }
        //工厂类
        class Factory
        {
            Car c = new Car();
            Bug b = new Bug();
            //方法一
            public void N1(string name)
            {
                    Console.WriteLine("汽车的名字为:{0}", name);
            }
            //方法二
            public void N2(string name)
            {
                Console.WriteLine("汽车的名字为:{0}", name);
            }
        }        
    }
}

结果:

C:\Users\Administrator\Desktop

二:工厂方法

        //1.每一种产品提供一个产品;
        //2.生产同一产品同一等级结构中的固定产品;
        //3.定义一个创建对象的接口;
        //缺点:相对于简单工厂实现较为复杂;
        //生成产品族的情况处理比较复杂;
        //优点:不需要关心创建的细节;
        //多态性工厂模式,符合开闭原则;
        //实现了可扩展性;

模型:

C:\Users\Administrator\Desktop

案例:

①:需要的类

C:\Users\Administrator\Desktop

②:各自的细节

C:\Users\Administrator\Desktop

③:各自的代码

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

三:抽象工厂

         //1.生产不同产品族的全部产品;

        //2.针对于系列;

       //优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象;

       //缺点:产品族扩展非常困难;产品等级容易扩展;

       //应用场景:QQ换肤;生成不同操作系统的程序;

模型:

C:\Users\Administrator\Desktop

案例:

①:需要的类

C:\Users\Administrator\Desktop

②:具体 代码

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop

其他类如同上述;

结果:

点击院长按钮显示出内容:

C:\Users\Administrator\Desktop

猜你喜欢

转载自blog.csdn.net/ProteaCynaroides/article/details/88559460