计算器实例
(利用面向对象封装的特性,将业务的逻辑与界面的逻辑分开,降低耦合度)

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Net;
 7 using System.Net.Sockets;
 8
 9
10 namespace Test
11 {
12     //运算类()
13     public class Operation
14     {
15         public static double GetResult(double numberA, double numberB, string operate)
16         {
17             double result = 0d;
18             switch (operate)
19             {
20                 case "+":
21                     result = numberA + numberB;
22                     break;
23                 case "-":
24                     result = numberA - numberB;
25                     break;
26                 case "*":
27                     result = numberA * numberB;
28                     break;
29                 case "/":
30                     result = numberA / numberB;
31                     break;
32                 default:
33                     break;
34             }
35             return result;
36         }
37     }
38
39     public class Program
40     {
41         static void Main(string[] args)
42         {
43             try
44             {
45                 Console.Write("请输入数字A:");
46                 string strNumberA = Console.ReadLine();
47                 Console.Write("请选择运算符号(+ 、- 、*、/、):");
48                 string strOperate = Console.ReadLine();
49                 Console.Write("请输入数字B:");
50                 string strNumberB = Console.ReadLine();
51                 string strResult = "";
52                 strResult = Convert.ToString(Operation.GetResult(Convert.ToDouble(strNumberA),
53                     Convert.ToDouble(strNumberB), strOperate));
54                 Console.WriteLine("结果是:" + strResult);
55                 Console.ReadLine();
56             }
57             catch (Exception ex)
58             {
59                 Console.WriteLine("您输入的有错:" + ex.Message);
60             }
61         }
62     }
63 }

///紧耦合 vs 松耦合
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;namespace Test
{//运算类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)throw new Exception("除数不能为0");result = NumberA / NumberB;return result;}}//简单工厂public class OperationFactory{public static Operation createOperate(string operate){Operation oper = null;switch (operate){case "+":oper = new OperationAdd();break;case "-":oper = new OperationSub();break;case "*":oper = new OperationMul();break;case "/":oper = new OperationDiv();break;}return oper;}}public class Program{static void Main(string[] args){Console.Write("请选择运算符号(+ 、- 、*、/、):");string strOperate = Console.ReadLine();Operation oper;oper = OperationFactory.createOperate(strOperate);Console.Write("请输入数字A:");oper.NumberA = Convert.ToDouble(Console.ReadLine());Console.Write("请输入数字B:");oper.NumberB = Convert.ToDouble(Console.ReadLine());double result = oper.GetResult();Console.WriteLine("结果是:" + result);Console.ReadLine();}}
}

  

转载于:https://www.cnblogs.com/unity3d-Yang/p/6402504.html

一、简单工厂模式 : 面向对象 特性 封装相关推荐

  1. 设计模式(0)简单工厂模式

    0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...

  2. 设计模式(1)--简单工厂模式、策略模式

    设计模式(1)--简单工厂模式.策略模式 1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static ...

  3. 设计模式 可复用面向对象软件的基础_面向对象的可复用设计模式之简单工厂模式(1/24)...

    在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用工厂模式: 由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方 ...

  4. js原生设计模式——3简单工厂模式\简单工厂模式封装简单对象

    1.Factory基本写法 <!DOCTYPE html> <html lang="en"> <head>     <meta chars ...

  5. 二次封装图片第三方框架——简单工厂模式的运用

    CSDN首发地址: 前言 写在前头,这篇博客对于老司机们没什么多大的意义,老司机们就不用看了,对于新手还是有很大实用价值的. 平时在项目中,你们有没有遇到这样的情况,比如之前项目是使用开源框架Imag ...

  6. 面向对象编程设计模式--简单工厂模式讲解(历史上最简单明白的例子)

    工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友, 一看马上就知道是什么回事了. 简单工厂模式根据提供给它的数据,返回几个可能类中的一个类 ...

  7. Asp.Net 设计模式 之 “简单工厂”模式

    主要思想: public static Operation CreateFactory(string ope) { //实例化空父类,让父类指向子类 Operation op = null; swit ...

  8. 设计模式之-简单工厂模式

    前言 为了理解和学习简单工厂模式,我们先看一段简单计算器的代码 class Program{static void Main(string[] args){Console.Write("请输 ...

  9. 第一章 —— 简单工厂模式(节选自:《大话设计模式》)

    1.4 面向对象编程 所有编程初学者碰到问题都会直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程.这其实是用计算机的方式去思考,比如计算器这个程序:先要求输入两个数和运算符号,然后 ...

  10. 【代码洁癖症】第1回-简单工厂模式

    [代码洁癖症]第1回-简单工厂模式 序言 在一个宁静的午后,我有幸拜读了程杰大鸟的<大话设计模式> 觉得这是一本不可多得的好书 奈何里面都是C++代码写的示例,对于学Java的同学不是很友 ...

最新文章

  1. php解析QQmv直链,网易云音乐直链解析API源代码^-^
  2. Mac VirtualBox 命令行Centos 挂载Mac系统中的文件夹
  3. Python机器学习笔记:深入理解Keras中序贯模型和函数模型
  4. 【PC工具】在线MP3转WAV工具,MP3文件转换成arduino可以直接播放的wav格式
  5. java 与 .net socket_java.net.Socket/java.net.ServerSocket-TCP Socket编程
  6. android 4个布局,Android - 4种基本布局
  7. Linux 脚本修改ini,Shell脚本读取ini配置文件的实现代码2例
  8. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
  9. 大家都在发圣诞树,我偏偏要发一个圣诞小游戏给大家玩【内附源码】
  10. 四大关键词解读“智慧乌鲁木齐”密码
  11. 拓端tecdat|R语言使用自组织映射神经网络(SOM)进行客户细分
  12. SWFUpload使用指南
  13. 【记录】非常实用,Python编码规范的一些建议(1)
  14. Git系列——删除文件的找回
  15. java mp4_java Mp4一边下载一边播放
  16. 5G注册流程分级详解Step4-8
  17. mysql数据库哪些情况不适合使用索引
  18. 高精地图在无人驾驶中的应用
  19. Markdown 教程(三)Markdown 段落
  20. NestedScrollView/ScrollView嵌套Recyclerview,导致Recyclerview抢占焦点,置顶了, 修改好后,引起Edittext又不能点击问题处理

热门文章

  1. Unity 常用API以及C# 工具类的使用
  2. Linux网络子系统中旧的报文接收接口netif_rx
  3. 长连接和端连接 心跳包机制
  4. Redis命令回溯方案
  5. mysql+mmm+主动模式_Zabbix主动代理模式 + 主动模式agent客户端
  6. 【渝粤教育】国家开放大学2019年春季 0390-22T古代诗歌散文专题 参考试题
  7. [渝粤教育] 中国地质大学 计算机组成原理 复习题 (2)
  8. Pandas系列(七)Pandas数据排序
  9. Java编程中组合、继承和代理的区别
  10. 复合索引的使用与创建时候的顺序有关 如果顺序颠倒 则不起作用