工厂方法模式
来源:互联网 发布:微软远程桌面控制软件 编辑:程序博客网 时间:2024/06/06 07:26
//工厂方法模式(创建型)
//与简单工厂模式的区别:
//简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化的类,对于客户端来说,
//去除了与具体产品的依赖。但是问题也在这里,就像为如果为简单工厂模式下的二元四则运算添加一个新的功能,如计算
// ”M的N次方“,这时候我们就需要在工厂类中增加一个case分支,这就违背了开闭原则。而工厂方法模式想要增加这个功能
//时,类都是在增加,没有修改,但客户端需要进行相应的修改。
//1、工厂方法模式下的二元四则运算
// 二元运算的基类
public 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; }}//虚函数
public virtual double GetResult(){double result = 0;
return result;
}}// 四则运算类
class OperationAdd : Operation
{//重写基类的虚函数
public override double GetResult(){double result = 0;
result = NumberA + NumberB;return result;
}}class OperationSub : Operation
{public override double GetResult(){double result = 0;
result = NumberA - NumberB;return result;
}}class OperationMul : Operation
{public override double GetResult(){double result = 0;
result = NumberA * NumberB;return result;
}}class OperationDiv : Operation
{public override double GetResult(){double result = 0;
if(NumberB != 0)
{result = NumberA / NumberB;}else
{throw new Exception("can't divided by 0");}return result;
}}//工厂接口
interface IFactory
{Operation CreateOperation();}//加减乘除各创建一个具体工厂实现接口
class AddFactory : IFactory
{public Operation CreateOperation()
{return new OperationAdd();}}class SubFactory : IFactory
{public Operation CreateOperation()
{return new OperationSub();}}class MulFactory : IFactory
{public Operation CreateOperation()
{return new OperationMul();}}class DivFactory : IFactory
{public Operation CreateOperation()
{return new OperationDiv();}}public class test{public static void Main(){IFactory operFactory = new AddFactory(); // 这个位置可更改Operation oper = operFactory.CreateOperation();oper.NumberA = 1;oper.NumberB = 2;double result = oper.GetResult();
Console.WriteLine(result);Console.ReadLine();}}
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- 接下来的清明节有三天假放
- Left4Dead2's wound
- COM 学习笔记(1)
- 内联汇编 实现 strlen
- Linux常用配置文件
- 工厂方法模式
- 开心网悄然开放API SNS产业链整合加快
- .NET中Cache的使用
- Linux下Oracle重启和修改连接数
- c# 通过飞信官方提供的API发送短信!
- 2010 3.18 晴天
- 标准IO测试
- VC++ 内联汇编函数调用方式
- 准备考会计注册师