C# 工厂设计模式

来源:互联网 发布:资本在线网络借贷 编辑:程序博客网 时间:2024/06/01 10:16

C# 工厂设计模式

工厂设计模式允许系统不修改工厂类逻辑的情况下来添加新产品,这样就减少了很多不必要的麻烦,如果工厂要升级,可以生产另外一种产品,只需要添加一个新的工厂,用于返回新的产品即可


产品类的实现


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MyProduct{    public enum ProductType    {        product1,        product2,    }    public abstract class Product    {        public ProductType productType;        public abstract void printProductName();    }    public class Product1 : Product    {        public override void printProductName()        {            Console.WriteLine("this is Product1 ");        }        public Product1()        {            Console.WriteLine("create a Product1 ");            this.productType = ProductType.product1;        }    }    public class Product2 : Product    {        public override void printProductName()        {            Console.WriteLine("this is Product2 ");        }        public Product2()        {            Console.WriteLine("create a Product2 ");            this.productType = ProductType.product1;        }    }}

工厂类的实现

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MyProduct;namespace MyFactory{    //简单工厂实现  修改起来需要频繁添加  case语句 , 不易维护    //class Factory    //{    //    public static Product CreateProduct(ProductType type)    //    {    //        Product product = null;    //        switch (type)    //        {    //            case ProductType.product1:    //                {    //                    product = new Product1();                            //                }    //                break;    //            case ProductType.product2:    //                {    //                    product = new Product2();    //                }    //                break;    //            default:    //                break;    //        }    //        return product;    //    }    //}    public abstract class Factory    {        public abstract Product CreateProduct();    }    public class Factory1 : Factory    {        public override Product CreateProduct()        {            return new Product1();        }    }    public class Factory2 : Factory    {        public override Product CreateProduct()        {            return new Product2();        }    }}

实际应用

Factory factory1 = new Factory1();            Product product1 = factory1.CreateProduct();            product1.printProductName();            Factory factory2 = new Factory2();            Product product2 = factory2.CreateProduct();            product2.printProductName();

控制台输出



如果要添加产品,只需要分别在Factory和Product类中添加相应的新工厂和新产品即可,重新创建一个新的文件也是可以的,这样就保证了不用修改之前的代码,实现了新产品的添加
0 0