首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C#设计模式——(创建型-简单工厂设计模式)

C#设计模式——(创建型-简单工厂设计模式)

原创
作者头像
用户10053120
修改2022-09-27 11:39:18
修改2022-09-27 11:39:18
4700
举报
文章被收录于专栏:C# 设计原则C# 设计原则

一、定义

  • 简单工厂设计模式,又称静态工厂方法,不属于23中设计模式。
  • 是由工厂决定创建出哪一种产品类的实例,是工厂模式家族中最简单的模式。

二、代码展示

计算机的加减乘除

代码语言:javascript
复制
public interface ICalculator  
{
    public double GetResult(double d1,double d2);
}
public class Add:ICalculator  
{
    public double GetResult(double d1,double d2)
    {
        return d1+d2;
    }
}
public class Sub:ICalculator  
{
    public double GetResult(double d1,double d2)
    {
        return d1-d2;
    }
}
public class Mul:ICalculator  
{
    public double GetResult(double d1,double d2)
    {
        return d1*d2;
    }
}
public class Div:ICalculator  
{
    public double GetResult(double d1,double d2)
    {
        return d1/d2;
    }
}
代码语言:javascript
复制
publci static void Main(string[]args)
{
    Console.WriteLine("请输入操作数1");
    double d1=Convert.Todouble(Console.ReadLine());
    Console.WriteLine("请输入操作数2");
    double d2=Convert.Todouble(Console.ReadLine());
    Console.WriteLine("请输入操作符");
    string oper=Console.ReadLine();
    ICalculator cal=null;
    switch(oper)
    {
    case"+":
        cal=new Add();
        break;
      case"-":
        cal=new Sub();
        break;
      case"*":
        cal=new Mul();
        break;
      case"/":
        cal=new Div();
        break;      
    }
    double ret=cal.GetResult(d1,d2);
    Console.ReadKey();
    //静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
}

三、静态工厂方法代码

代码语言:javascript
复制
//静态工厂方法,把创建对象的过程封装到静态方法中,在客户端直接调用方法,实现客户端和创建对象的解耦,明确职责
public class CalFactory
{
    public static ICalculator(string oper)
    {
    ICalculator cal=null;
    switch(oper)
    {
    case"+":
        cal=new Add();
        break;
      case"-":
        cal=new Sub();
        break;
      case"*":
        cal=new Mul();
        break;
      case"/":
        cal=new Div();
        break;      
    }
    }
}

四、简单工厂模式的优缺点

  • 优点

1、简单工厂模式解决了客户端直接依赖于具体对象的问题,客户端消除了创建对象的责任,仅仅承担使用的责任。实现了责任的分割

2、简单工厂也实现了代码复用。

  • 缺点

1、系统扩展困难,一旦加入新功能,就必须修改工厂逻辑;

2、简单工厂集合了所有创建对象的逻辑,一旦不能正常工作,会导致整个系统出现问题。


老赵Net学习笔记

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档