设计模式实例-工厂方法模式
来源:互联网 发布:一个域名成就一个梦想 编辑:程序博客网 时间:2024/06/04 23:22
using System;namespace Ahoo.Demo.DesignPatterns.Patterns.FactoryMethod{ /*######工厂方法模式####### * 定义一个用于创建对象的接口, * 让子类觉得实例化哪个类。 * 使类的实例化延迟到子类 */ #region 操作类 /// <summary> /// 抽象类 /// </summary> public abstract class Operation { public double FirstNumber { get; set; } public double SecondNumber { get; set; } public abstract double GetResult(); } public class AddOperation : Operation { public override double GetResult() { double result = FirstNumber + SecondNumber; return result; } } /// <summary> /// 具体操作子类(-) /// </summary> public class SubOperation : Operation { public override double GetResult() { double result = FirstNumber - SecondNumber; return result; } } /// <summary> /// 具体操作子类(*) /// </summary> public class MulOperation : Operation { public override double GetResult() { double result = FirstNumber * SecondNumber; return result; } } /// <summary> /// 具体操作子类(/) /// </summary> public class DivOperation : Operation { public override double GetResult() { if (SecondNumber == 0) { throw new ArgumentException("参数[SecondNumber]不能为0!"); } double result = FirstNumber / SecondNumber; return result; } } #endregion /// <summary> /// 工厂接口 /// </summary> interface IFactory { Operation CreateOperation(); } public class AddFactory : IFactory { public Operation CreateOperation() { return new AddOperation(); } } public class SubFactory : IFactory { public Operation CreateOperation() { return new SubOperation(); } } public class AddFactory : IFactory { public Operation CreateOperation() { return new AddOperation(); } } public class MulFactory : IFactory { public Operation CreateOperation() { return new MulOperation(); } } public class DivFactory : IFactory { public Operation CreateOperation() { return new DivOperation(); } } public class Client { public static void Excute() { IFactory factory = new AddFactory(); Operation operation = factory.CreateOperation(); Console.WriteLine("请输入操作符 第一个操作数"); operation.FirstNumber = Double.Parse(Console.ReadLine()); Console.WriteLine("请输入操作符 第二个操作数"); operation.SecondNumber = Double.Parse(Console.ReadLine()); Console.WriteLine("结果为:{0}", operation.GetResult()); } }}
0 0
- 设计模式实例-工厂方法模式
- 【设计模式】之实例化简单工厂、工厂方法模式
- 设计模式实例学习-工厂方法
- 设计模式 --- 工厂模式 实例
- 工厂方法模式实例
- .Net设计模式实例之工厂方法模式(转载)
- 23种设计模式C++实例之工厂方法模式
- 设计模式--工厂方法
- 工厂方法设计模式
- 设计模式-工厂方法
- 【设计模式】【工厂方法】
- 设计模式 - 工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 【设计模式】工厂方法
- 设计模式--工厂方法
- 设计模式---工厂方法
- 设计模式-工厂方法
- estful_api
- ubuntu 安装apache2扩展
- linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
- c++输入输出操作符重载
- A ab=new B();
- 设计模式实例-工厂方法模式
- iOS —— 多参数方法的声明与实现
- 关于Nginx的server_name
- ceph存储 FUSE的big_writes与direct_io选项分析
- Choosing a Machine Learning Classifier
- ios设备唯一标识获取策略
- 黑马程序员-----java正则表达式
- SOCKET--tcp粘包分析
- 使用FragmentTabHost实现Tab页