1. 程式人生 > 其它 >工廠模式——簡單工廠模式

工廠模式——簡單工廠模式

工廠模式顧明思義就是建立產品,根據產品是具體的產品還是具體的工廠可以分為簡單工廠模式和抽象工廠模式。

該模式用於封裝和管理物件的建立,是一種建立型模式。

類檢視:

使用加減乘除運算來看下工廠模式:

1、運算類:Operation

 public class Operation
    {
        /// <summary>
        /// 
        /// </summary>
        public decimal NumberA { get; set; }

        /// <summary>
        /// 
        /// </summary>
public decimal NumberB { get; set; } /// <summary> /// 虛方法 /// </summary> /// <returns></returns> public virtual decimal GetResult() { var result = 0; return result; } }

加減乘除 都需要繼承 這個運算類:

2、加類

public
class OperationAdd : Operation { public override decimal GetResult() { var result = NumberA + NumberB; return result; } }

我們看到OperationAdd 繼承 Operation

3、減類

 public class OperationSub : Operation
    {
        public override decimal GetResult()
        {
            var result = NumberA - NumberB;
            return result;
        }
    }

我們看到OperationSub繼承Operation 

乘除類也都是同樣的方式 通過繼承來實現;

工廠模式我們必須要建造一個工廠類:

public class OperationFactory
    {
        /// <summary>
        /// 簡單工廠模式
        /// </summary>
        /// <param name="operation"></param>
        /// <returns></returns>
        public Operation CreateOperation(string operation)
        {
            Operation pore = null;
            switch (operation)
            {
                case "+":
                    pore = new OperationAdd();
                    break;
                case "-":
                    pore = new OperationSub();
                    break;
                case "*":
                    pore = new OperationMul();
                    break;
                case "/":
                    pore = new OperationDiv();
                    break;
            }
            return pore;
        }
    }

建立一個工廠類,根據不同的引數實現不同的方法;

Operation 是父類,加減乘除是子類,所有子類都繼承了父類的屬性,和方法

看下Main方法:

     static void Main(string[] args)
        {
            #region 簡單工廠模式
            Console.WriteLine("簡單工廠模式:");
            Console.WriteLine("控制檯計算器實現加減乘除");
            Console.WriteLine("請輸入計算數字");
            var numberA = Console.ReadLine();
            Console.WriteLine("運算子 + - * /");
            var operation = Console.ReadLine();
            Console.WriteLine("請輸入計算數字");
            var numberB = Console.ReadLine();
            try
            {
                var result = _operationFactory.CreateOperation(operation);
                decimal.TryParse(numberA, out decimal decimalA);
                result.NumberA = decimalA;
                decimal.TryParse(numberB, out decimal decimalB);
                result.NumberB = decimalB;
                var operationValue = result.GetResult();
                Console.WriteLine(operationValue);
            }
            catch (Exception e)
            {
                Console.WriteLine("輸入內容有誤");
            }
            Console.WriteLine("Hello World!");

            #endregion
        }

由此得出我們建立一個工廠通過工廠去根據不同的型別實現不同的結果:這就是簡單工廠模式