花了两个小时搞了个计算器.(反射工厂)
来源:互联网 发布:java.util.arrays 编辑:程序博客网 时间:2024/04/30 13:23
class Program { static void Main(string[] args) { while (true) { Console.WriteLine("请输入数字a"); double num1 = GetInputNum(); Console.WriteLine("请输入运算符号"); string sign = Console.ReadLine(); while (string.IsNullOrWhiteSpace(sign)) { Console.WriteLine("请输入正确的运算符号"); sign = Console.ReadLine(); } Console.WriteLine("请输入数字b"); double num2 = GetInputNum(); ICanCalculate calc = CalculateFactory.CreateCalc(sign); if (calc == null) { Console.WriteLine("无法实例化算法对象,请检查配置文件"); } else { double result = calc.Calculate(num1, num2); Console.WriteLine("{0} {1} {2} = {3}",num1,sign,num2,result); } } } static double GetInputNum() { while (true) { string input = Console.ReadLine(); double result; if (double.TryParse(input, out result)) { return result; } else { Console.WriteLine("您的输入有误,请重新输入"); } } } } public class CalculateFactory { public static ICanCalculate CreateCalc(string sign) { string typeName = ConfigurationManager.AppSettings[sign]; if (string.IsNullOrWhiteSpace(typeName)) { throw new ArgumentException("参数无效", "sign"); } else { Assembly assembly = Assembly.LoadFrom("ConsoleApplication2.exe");//程序集名称 return assembly.CreateInstance(typeName) as ICanCalculate; } } } public interface ICanCalculate { double Calculate(double num1, double num2); } public class AddCalc : ICanCalculate { public double Calculate(double num1, double num2) { return num1 + num2; } }
在工厂里面可实现自定义配置文件
想了一下,修改了一下接口
public interface ICanCalculate { bool CheckInput(double num1, double num2); double Calculate(double num1, double num2); } public class AddCalc : ICanCalculate { public double Calculate(double num1, double num2) { return num1 + num2; } public bool CheckInput(double num1, double num2) { return true; } }
阅读全文
0 0
- 花了两个小时搞了个计算器.(反射工厂)
- 6个A...搞了4个小时..汗!!!!!!!!!
- 花了两个小时做的-- 算不算久呢? 事件监听器 计算器java版 GUI
- 用了12个小时完成一个计算器小作业
- 搞了个博客
- 搞了两个小时,终于成功地把VMware删掉,又重新安装上
- 足足整了两个小时
- 花了二个小时整理CSS
- 我搞了个服务器
- 搞了个 HTML 哈哈
- 少了6个小时
- 今天终于搞了个BLOG了
- VS终于拿Breeze's MH 开刀了,花了两个多小时搞定了最新版
- javascript中的闭包,花了半个小时才搞明白原理
- 下午去华为面了两个小时
- 坑爹的ViewFlipper,花了我好几个小时
- 昨天花了两个小时做了一个天气预报的Demo,希望对新人有所帮助。
- async太好用了,用了两个小时写的代码
- C++中的STL中map用法详解
- 蓝桥杯 ADV-181 算法提高 质因数2
- visibility在ie 伪类元素下的表现
- C语言隐式类型转换
- 归并排序
- 花了两个小时搞了个计算器.(反射工厂)
- 关于ExtJS3.1与ExtJS4.2的区别
- 前端开发规范手册(一)--基本原则
- git常用命令
- 蓝桥杯 ADV-176 算法提高 陶陶摘苹果
- Android透明状态栏实践
- [剑指offer]合集
- windows下面查找端口号
- java设计模式之外观模式(门面模式)