简单工厂模式

本文介绍了简单工厂模式的概念、角色和实现,包括如何创建产品接口、具体产品类以及工厂类,并展示了其在实际代码中的应用。同时,讨论了简单工厂模式的优缺点,如责任集中、易于扩展但也可能导致类的数量增多和维护困难。此外,还引入了泛型工厂模式,通过泛型简化了工厂类的实现,避免了大量的条件判断。
摘要由CSDN通过智能技术生成

简单工厂模式:
·定义:定义一个工厂类,可以根据不同的方法返回不同类的实例,被创建的实例通常具有共同的父类。
·包含角色:
Factory(工厂):核心部分,实现创建所有产品的内部逻辑,工厂类可被外界直接调用,创建所需对象
Product(抽象类产品):工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象
ConcreteProduct(具体产品):目标产品,所有被创建的对象都是某个具体类的实例。它要实现抽象产品中声明的抽象方法(有关抽象类)。
简单实现:

1、创建产品接口
public interface IProduct //接口 抽象产品类 
{
    //各种产品功能
   void make();
}
2、创建实际产品类
public class Product : IProduct//具体产品
{
    //实现接口
    public  void make() 
    {
    
    }
}
3、创建工厂类
public class factory//工厂类
{
    //静态方法生产产品 参数只要能区分种类即可,是不是字符串无所谓
    public static IProduct CreateProduct(string type)
    {
        IProduct NeedProduct = null;
        //匹配生产选择的产品
        switch (type)
        {
            case "...":
                NeedProduct = new Product();
                break;
        }
        return NeedProduct;
    }

优点:工厂类包含了必要的判断,自动根据传入的参数创建相应的实例,责任相对明确,可通过 相应的配置文件更换和增加新的具体产品类,较为灵活。
缺点:工厂类责任过重,一旦出现问题,整个系统都会出现问题。使用简单工厂模式会增加类的个数,系统复杂度会越来越高,且每次扩展都需要更改工厂类方法。
泛型工厂:
将工厂类改为:

public class factory<T>where T:Product,new()
{
    //静态方法生产产品
    public static T CreateProduct()
    {
        T product = new T();
        return new T();
    }
}

优点;简化了工厂类,省去了大量判断语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值