您的位置:首页 > 其它

【软考学习】设计模式——工厂方法

2017-11-05 21:56 393 查看
【背景】

设计模式是非常重要的一块知识,每个设计模式都值得深入了解和学习。

【内容】

工厂方法设计模式总结:

    一、定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。

    二、UML结构图:



三、代码实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂方法_计算器
{
class Operation
{
private double _numberA = 0;
private double _numberB = 0;

public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}

public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}

/// <summary>
/// 得到运算结果
/// </summary>
/// <returns></returns>
public virtual double GetResult()
{
double result = 0;
return result;
}
}

/// <summary>
/// 加法类
/// </summary>
class OperationAdd: Operation
{
public override double GetResult()
{
double result=0;
result =NumberA+NumberB;
return result ;
}
}

/// <summary>
/// 减法类
/// </summary>
class OperationSub:Operation
{
public override double GetResult()
{
double result=0;
result =NumberA-NumberB;
return result;
}
}

/// <summary>
/// 乘法类
/// </summary>
class OperationMul:Operation
{
public override double GetResult()
{
double result =0;
result =NumberA *NumberB;
return result;
}
}

/// <summary>
/// 除法类
/// </summary>
class OperationDiv:Operation
{
public override double GetResult()
{
double result=0;
result =NumberA /NumberB;
return result;
}
}

/// <summary>
/// 工厂方法
/// </summary>
interface IFactory
{
Operation CreateOperation();
}

/// <summary>
/// 专门负责生产“+”的工厂
/// </summary>
class AddFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationAdd();
}
}

/// <summary>
/// 专门负责生产“-”的工厂
/// </summary>
class SubFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationSub();
}
}

/// <summary>
/// 专门负责生产“*”的工厂
/// </summary>
class MulFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationMul();
}
}

/// <summary>
/// 专门负责生产“/”的工厂
/// </summary>
class DivFactory : IFactory
{
public Operation CreateOperation()
{
return new OperationDiv();
}
}
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂方法_计算器
{
class Program
{
static void Main(string[] args)
{
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result);
Console.Read();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: