C# 工厂设计模式

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();

控制台输出

C# 工厂设计模式_第1张图片

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

你可能感兴趣的:(C# 工厂设计模式)