c#设计模式——工厂方法模式

一 概要

1.1 创建型模式

  1. 描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。

1.2 定义

  1. 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。

二 UML类图

在这里插入图片描述

三 例子

   public interface IFactory
   {
       IProduct GetProduct();

   }

   public class FactoryA : IFactory
   {
       public IProduct GetProduct()
       {
           return new ProductA();
       }
   }

   public class FactoryB : IFactory
   {
       public IProduct GetProduct()
       {
           return new ProductB();
       }
   }


   public interface IProduct
   {
       void Operation();
   }

   public class ProductA : IProduct
   {
       public void Operation()
       {
          //todo;
       }
   }
   public class ProductB : IProduct
   {
       public void Operation()
       {
           //todo;
       }
   }

   public class Test
   {
       public Test()
       {
           IFactory factory = new FactoryA();
           IProduct product = factory.GetProduct();
           product.Operation();
       }
  }

四 与简单工厂的区别

工厂方法是对简单工厂的进一步抽象, 简单工厂是一个工厂类管理了所有产品对象的创建, 而工厂方法则是把工厂抽象化, 在对应的子类工厂内创建对应的产品对象。

五 优缺点

5.1优点

  1. 降低了产品类与客户端代码的耦合,克服了简单工厂违背开放封闭的原则,每次新增产品, 只需要增加新的对应的产品工厂管理, 无需修改原有的工厂类。

5.2 缺点

  1. 每新增一种产品, 都要新增一个对应的产品工厂类。

六 使用场景

  1. 客户只知道创建产品的工厂名,而不知道具体的产品名。
  2. 创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
  3. 客户不关心创建产品的细节,只关心产品的品牌。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值