[Design Pattern] Factory

工廠模式 - Factory

提供一個工廠介面,藉由工廠介面,將產生實體的功能,交由子類別各自實現。

設計一個簡易的汽車工廠介面

設計一個汽車工廠介面,該工廠會設定汽車的品牌名與車子的速度

    public interface ICar
    {
        string Vendor();
        int Speed();
    }

產物(類別)繼承工廠,並實作其特性

汽車由工廠介面,來分別實作其特性。

    public class Honda : ICar
    {
        public string Vendor()
        {
            return "Honda";
        }

        public int Speed()
        {
            return 100;
        }
    }
    ...
    public class Toyota : ICar
    {
        public string Vendor()
        {
            return "Toyota";
        }

        public int Speed()
        {
            return 80;
        }
    }

設計工廠中心介面

設計工廠中心介面,由該工廠來生產汽車模型。

    public interface ICarFactory
    {
        ICar CarMake();
    }

各產線,各自生產

各產線取得車子的模型後,各自生產自己的車子。

    public class CarMadeHonda : ICarFactory
    {
        public ICar CarMake()
        {
            return new Honda();
        }
    }

    public class CarMadeToyota : ICarFactory
    {
        public ICar CarMake()
        {
            return new Toyota();
        }
    }

產線生產(主程式)

透過工廠模式,告訴產線說,我現在想生產什麼樣的車子,由產線各自生產。

class Program
    {
        static void Main(string[] args)
        {
            ICarFactory hondaFactory = new CarMadeHonda();
            ICarFactory toyotaFactory = new CarMadeToyota();
            var honda = hondaFactory.CarMake();
            var toyota = toyotaFactory.CarMake();
            Console.WriteLine("What's Car : {0}", honda.Vendor());
            Console.WriteLine("Honda Speed : {0}", honda.Speed());
            Console.WriteLine("What's Car : {0}", toyota.Vendor());
            Console.WriteLine("Toyota Speed : {0}", toyota.Speed());
            Console.ReadLine();
        }
    }

留言

這個網誌中的熱門文章

[Tools] GCOV & LCOV 初探

Quilt Patch 管理操作方法

[C#]C# Coding 規則