今天開始陸續研究OOP的一些開發模式,而第一篇就是就從好幾次面試都被問到的Factory(簡單工廠模式)開始好了...
什麼是簡單工廠模式呢??
生活上的例子就是 => 去到飲料店(DrinkFactory)只需要跟店員講我要點什麼飲料(ex:Green、Coffee..等),我並不需要知道飲料的配方就可以得到一杯我要的飲料,這就是簡單工廠的模式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory_Simple
{
class Program
{
static void Main(string[] args)
{
#region 簡單工廠
Shop shop;
shop = DrinkFactory.CreateDrink("Green");
shop.MakeDrink();
Console.WriteLine("===========完成訂單=============");
shop = DrinkFactory.CreateDrink("Coffee");
shop.MakeDrink();
Console.WriteLine("===========完成訂單=============");
#endregion
Console.ReadLine();
}
}
}
Class Shop.cs
namespace Factory_Simple
{
public abstract class Shop
{
public abstract void MakeDrink();
}
}
DrinkFactory.cs
using System;
namespace Factory_Simple
{
public class DrinkFactory
{
public static Shop CreateDrink(string Drink)
{
Shop obj=null;
switch (Drink)
{
case "Green":
obj = new Green();
break;
case "Coffee":
obj = new Coffee();
break;
}
return obj;
}
}
public class Coffee : Shop
{
public Coffee()
{
Console.WriteLine("收到咖啡訂單");
}
public override void MakeDrink()
{
Console.WriteLine("開始製作咖啡");
}
}
public class Green : Shop
{
public Green()
{
Console.WriteLine("收到綠茶訂單");
}
public override void MakeDrink()
{
Console.WriteLine("開始製作綠茶");
}
}
}
列出以下結果
但如果使用簡單工廠模式,缺點就是如果要新增飲料的種類,就需要修改到靜態方法(CreateDrink),
那就可以使用工廠模式(對靜態方法的修改是封閉的)
工廠模式就留到下一篇繼續囉~也希望各位前輩多多指教 我是會敬老尊賢的XXD(開玩笑的)
================================================================================================
過了好久才發了這篇,不過發現Disqus還真的是滿不錯的,還研究了一下 哈哈