一、【简单工厂】模式的适用情景
多个产品属于一类,能通过型号区分——比如可乐、雪碧、美年达,都属于饮料类(用名字区分)
二、UML图
“类”——被写成{抽象产品类}
“多个产品” ——被写成{具体产品类A/B/C}
工厂类——负责根据不同型号,生成具体产品对象
外界——调用工厂类静态生产方法,得到产品对象
三、生产饮料的例子
visual studio代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//根据用户输入的产品名字,生产产品
//此处是根据用户输入的饮料名字,生产饮料
//(“饮料”的类型有三种:“可乐”、“雪碧”、“美年达”)
namespace SimpleFactoryPattern
{
//调用
class Program
{
static void Main(string[] args)
{
string name = Console.ReadLine();
Drinks drink = Factory.Product(name);
drink.ShowInfo();
Console.ReadKey();
}
}
//抽象产品:饮料
public abstract class Drinks
{
public abstract void ShowInfo();
}
//具体产品A:可乐
public class KeLe:Drinks
{
public override void ShowInfo()
{
Console.WriteLine("【可乐】Open Happiness");
}
}
//具体产品B:雪碧
public class XueBi : Drinks
{
public override void ShowInfo()
{
Console.WriteLine("【雪碧】透心凉,心飞扬");
}
}
//具体产品C:美年达
public class MeiNianDa : Drinks
{
public override void ShowInfo()
{
Console.WriteLine("【美年达】运动一刻,来口橙味美年达");
}
}
//工厂类:根据“型号信息”生产产品
public class Factory
{
public static Drinks Product(string productName)
{
Drinks drink = null;
switch(productName)
{
case "可乐":
{
drink = new KeLe();
return drink;
break;
}
case "雪碧":
{
drink = new XueBi();
return drink;
break;
}
case "美年达":
{
drink = new MeiNianDa();
return drink;
break;
}
}
return drink;
}
}
}
四、核心
把产品实例化
的过程,放到了工厂类的静态方法
中