[db:标题]
摘要:前言 上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧! 在了解简单工厂模式之前,我们要知道C#是
前言
上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧!
在了解简单工厂模式之前,我们要知道C#是一款面向对象的高级程序语言。它有3大特性,封装、继承、多态。
简述
工厂模式(Factory Pattern)是一种常用的设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
工厂模式的核心是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。这样客户端可以无需指定具体产品的类,只需通过工厂类即可得到所需的产品对象。
工厂模式主要分为三种类型:简单工厂模式(Simple Factory Pattern)、工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)。
本文主要讲解简单工厂模式(Simple Factory Pattern)。
案例带入
下面使用C#控制台程序去写一个简易的计算器,实现加减乘除。如果我没学过设计模式,我会这么写:
static void Main(string[] args)
{
Console.WriteLine("请输入数字A:");
string A = Console.ReadLine();
Console.WriteLine("请选择运算符号:(+、-、*、/):");
string op = Console.ReadLine();
Console.WriteLine("请输入数字B:");
string B = Console.ReadLine();
string result = "";
switch (op)
{
case "+":
result = Convert.ToString(Convert.ToDouble(A) + Convert.ToDouble(B));
break;
case "-":
result = Convert.ToString(Convert.ToDouble(A) - Convert.ToDouble(B));
break;
case "*":
result = Convert.ToString(Convert.ToDouble(A) * Convert.ToDouble(B));
break;
case "/":
result = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(B));
break;
default:
Console.WriteLine("输入的运算符号有误!");
break;
}
Console.WriteLine("结果:" + result);
}
上述代码乍一看没问题,实则隐藏了很多陷阱,比如:
变量命名不规范
除数为0怎么办
输入的不是数字怎么办
......
优化
我们用面向对象的思想进行优化,主要体现在:可维护、可复用、可扩展、灵活性几个方面。通过封装、继承、多态来降低程序的耦合度。
封装
我们可以将运算逻辑封装成一个方法去实现,让主方法减轻负担。
