工厂模式(计算器)

工厂模式相对于简单工厂模式更方便扩展 另外对于实例变化修改更方便
也更安全(无switch进行判断) 扩展只需要一个类重写父类方法 一个类继承接口返回对应方法

首先封装字段 并创建虚方法

using System;
using System.Collections.Generic;
using System.Text;

namespace 工厂模式计算器
{
    interface IProduct//此接口就是后面代理公司调用对应实例的方法
    {
        CalculatorProduct GetProduct();
    }
    class CalculatorProduct
    {
        private int number_a;
        private int number_b;
        public int Number_a{ get { return number_a;} set { number_a = value;}}
        public int Number_b{get { return number_b;} set { number_b = value;}}
        public virtual int GetResoult()
        {
            int res = 0;
            return res;
        }
    }
}

子类继承并重写方法

using System;
using System.Collections.Generic;
using System.Text;

namespace 工厂模式计算器
{
    class CalculatorADD: CalculatorProduct
    {
        public override int GetResoult()
        {
            int res = 0;
            res = Number_a + Number_b;
            return res;
        }
    }
}

代理公司返回对应方法

using System;
using System.Collections.Generic;
using System.Text;

namespace 工厂模式计算器
{
    class GetCalculatorAdd : IProduct
    {
        public CalculatorProduct GetProduct()
        {
            return new CalculatorADD();
        }
    }
 }

调用

using System;

namespace 工厂模式计算器
{
    class Program
    {
        static void Main(string[] args)
        {
        //以下两种实例创建一样  第一种省略了一些代码
            CalculatorProduct opp = new GetCalculatorChu ().GetProduct();
            opp.Number_a =55;
            opp.Number_b = 15;          
            Console.WriteLine(opp.GetResoult());

            IProduct iproduct = new GetCalculatorAdd();
            CalculatorProduct oper = iproduct.GetProduct();
            oper.Number_a = 45;
            oper.Number_b = 20;
            Console.WriteLine(oper.GetResoult());      
        }
 }

你可能感兴趣的:(c#,设计模式)