C#簡單工廠設計模式實現計算器
阿新 • • 發佈:2019-02-10
一、首先建立PlusOperation類庫,其中包含抽象父類Operation,以及加、減、乘、除四個子類!
(1)父類Operation
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NameSpaceOperation
{
public abstract class Operation
{
public int NumberOne { get ; set; }
public int NubmerTwo { get; set; }
public Operation(int a,int b)
{
this.NumberOne = a;
this.NubmerTwo = b;
}
public abstract int GetResult();
}
}
(2)加法子類Add
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NameSpaceOperation
{
public class Add : Operation
{
public Add(int a, int b) : base(a, b)
{
}
public override int GetResult()
{
return this.NumberOne + this.NubmerTwo;
}
}
}
(3)減法子類Sub
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NameSpaceOperation
{
public class Sub : Operation
{
public Sub(int a, int b) : base(a, b)
{
}
public override int GetResult()
{
return this.NumberOne - this.NubmerTwo;
}
}
}
(4)乘法子類Mul
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NameSpaceOperation
{
public class Mul : Operation
{
public Mul(int a, int b) : base(a, b)
{
}
public override int GetResult()
{
return this.NumberOne * this.NubmerTwo;
}
}
}
(5)除法子類Div
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NameSpaceOperation
{
public class Div : Operation
{
public Div(int a, int b) : base(a, b)
{
}
public override int GetResult()
{
return this.NumberOne / this.NubmerTwo;
}
}
}
二、建立專案SimpleFactoryPatternCalculator,引入PlusOperation類庫,新增NameSpaceOperation名稱空間
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NameSpaceOperation;
namespace SimpleFactoryPatternCalculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("請輸入你的第一個數字");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("請輸入你的第二個數字");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("請輸入你的運算子");
string strOper = Console.ReadLine();
Operation oper = GetOperation(strOper,a, b);
if (oper!=null)
{
int result = oper.GetResult();
Console.WriteLine("{0}{1}{2}={3}",a,strOper,b,result);
}
else
{
Console.WriteLine("沒有你需要的運算子");
}
}
static Operation GetOperation(string oper,int a,int b)
{
Operation operation = null;
switch (oper)
{
case "+":
operation = new Add(a, b);
break;
case "-":
operation = new Sub(a, b);
break;
case "*":
operation = new Mul(a, b);
break;
case "/":
operation = new Div(a, b);
break;
}
return operation;
}
}
}