C#简单工厂模式实现松耦合度四则运算

简介: 呵呵,我本来没有C#的过多功底,只是想想像整合了书上的代码,居然OK了。 自喜一下。。 1 using System; 2 public class Operation 3 { 4 private double _numberA = 0; 5 pr...

呵呵,我本来没有C#的过多功底,只是想想像整合了书上的代码,居然OK了。

自喜一下。。

  1 using System;
  2 public class Operation
  3 {
  4     private double _numberA = 0;
  5     private double _numberB = 0;
  6     
  7     public double NumberA
  8     {
  9         get { return _numberA; }
 10         set { _numberA = value; }
 11     }
 12     public double NumberB
 13     {
 14         get { return _numberB; }
 15         set { _numberB = value; }
 16     }
 17     public virtual double GetResult()
 18     {
 19         double result = 0;
 20         return result;
 21     }
 22 }
 23 
 24 class OperationAdd : Operation
 25 {
 26     public override double GetResult()
 27     {
 28         double result = 0;
 29         result = NumberA + NumberB;
 30         return result;
 31     }
 32 }
 33 
 34 class OperationSub : Operation
 35 {
 36     public override double GetResult()
 37     {
 38         double result = 0;
 39         result = NumberA - NumberB;
 40         return result;
 41     }
 42 }
 43 
 44 class OperationMul : Operation
 45 {
 46     public override double GetResult()
 47     {
 48         double result = 0;
 49         result = NumberA * NumberB;
 50         return result;
 51     }
 52 }
 53 
 54 class OperationDiv : Operation
 55 {
 56     public override double GetResult()
 57     {
 58         double result = 0;
 59         if (NumberB == 0)
 60             throw new Exception("div number can not be 0.");
 61         result = NumberA / NumberB;
 62         return result;
 63     }
 64 }
 65 
 66 public class OperationFactory
 67 {
 68     public static Operation createOperate(string operate)
 69     {
 70         Operation oper = null;
 71         switch (operate)
 72         {
 73             case "+":
 74                 oper = new OperationAdd();
 75                 break;
 76             case "-":
 77                 oper = new OperationSub();
 78                 break;
 79             case "*":
 80                 oper = new OperationMul();
 81                 break;
 82             case "/":
 83                 oper = new OperationDiv();
 84                 break;
 85         }
 86         return oper;
 87     }
 88 }
 89 public class OperationClient
 90 {
 91     class Program
 92     {
 93         public static void Main(string[] args)
 94         {
 95             Operation oper;
 96 
 97             Console.Write("Please input numberA: ");
 98             string strNumberA = Console.ReadLine();
 99             Console.Write("Please select operate(+ - * /): ");
100             string strOperate = Console.ReadLine();
101             oper = OperationFactory.createOperate(strOperate);
102             Console.Write("Please input numberB: ");
103             string strNumberB = Console.ReadLine();
104             oper.NumberA = Convert.ToDouble(strNumberA);
105             oper.NumberB = Convert.ToDouble(strNumberB);
106             string strResult = "";
107             strResult = Convert.ToString(oper.GetResult());
108             Console.WriteLine("Result is :" + strResult);
109             Console.ReadLine();
110             Console.Write("Press any key to continue . . . ");
111             Console.ReadKey(true);
112         }
113     }
114 }

目录
相关文章
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
188 1
|
5月前
|
机器学习/深度学习 监控 算法
局域网行为监控软件 C# 多线程数据包捕获算法:基于 KMP 模式匹配的内容分析优化方案探索
本文探讨了一种结合KMP算法的多线程数据包捕获与分析方案,用于局域网行为监控。通过C#实现,该系统可高效检测敏感内容、管理URL访问、分析协议及审计日志。实验表明,相较于传统算法,KMP在处理大规模网络流量时效率显著提升。未来可在算法优化、多模式匹配及机器学习等领域进一步研究。
137 0
|
10月前
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
194 73
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
207 2
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
991 0
|
前端开发 开发者 C#
深度解析 Uno Platform 中的 MVVM 模式:从理论到实践的全方位指南,助你轻松掌握通过 C# 与 XAML 构建高效可维护的跨平台应用秘籍
【8月更文挑战第31天】本文详细介绍如何在优秀的跨平台 UI 框架 Uno Platform 中实施 MVVM(Model-View-ViewModel)模式,通过一个简单的待办事项列表应用演示其实现过程。MVVM 模式有助于分离视图层与业务逻辑层,提升代码组织性、易测性和可维护性。Uno Platform 的数据绑定机制使视图与模型间的同步变得高效简便。文章通过构造 `TodoListViewModel` 类及其相关视图,展示了如何解耦视图与模型,实现动态数据绑定及命令处理,从而提高代码质量和开发效率。通过这一模式,开发者能更轻松地构建复杂的跨平台应用。
208 0
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
246 3
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
256 0
|
设计模式 前端开发 C#
WPF/C#:理解与实现WPF中的MVVM模式
WPF/C#:理解与实现WPF中的MVVM模式
1150 0
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。

热门文章

最新文章

下一篇
开通oss服务