当前位置: 首页 > news >正文

站点和网页的关系北恩uc3客户管理软件

站点和网页的关系,北恩uc3客户管理软件,百度站长反馈中心,沈阳网站设计培训班简单工厂设计模式#xff08;计算器实例优化#xff09; 介绍为什么采用面向对象编程而不是面向过程呢#xff1f;实例讲解业务层划分出来逻辑层继承简单工厂#xff1a;#xff08;多态#xff09;业务层#xff1a;#xff08;解耦合#xff09;主控制台 总结 介绍 … 简单工厂设计模式计算器实例优化 介绍为什么采用面向对象编程而不是面向过程呢实例讲解业务层划分出来逻辑层继承简单工厂多态业务层解耦合主控制台 总结 介绍 本文内容引用自《大话这设计模式》这本书第一章节简单工厂设计模式供自己提高代码水平使用。 案例也同样采用计算器功能实现方式展开 实现功能----封装----继承----多态----面向对象 为什么采用面向对象编程而不是面向过程呢 在当今互联网开发的大型企业中你会发现当你接到一个功能模块的时候不会给你完整的项目源码特别是核心的东西为什么呢 仔细想一下如果公司把员工薪资分发系统让你修改这时你动了一下坏心思做了一层 If 判断如果名字是自己的话薪资*2是不是公司就赔了况且公司也不会这么傻把这种核心的功能让新手做修改这就引入代码的面向对象将代码分为逻辑层和业务层分开处理这样不仅逻辑清晰方便后期的修改也方便了公司为自身的保护。 实例讲解 我们创建一个主控制台,先用一个面向过程的编程方式去写一个计算器功能代码如下 while (true){try{Console.WriteLine(请输入第一个数字一);double number1 double.Parse(Console.ReadLine());Console.WriteLine(请输入运算符);string symbol Console.ReadLine();Console.WriteLine(请输入第一个数字二);double number2 double.Parse(Console.ReadLine());switch (symbol){case :Console.WriteLine(number1 number2);break;case -:Console.WriteLine(number1 - number2);break;case *:Console.WriteLine(number1 * number2);break;case /:if (number2 0d){Console.WriteLine(被除数不能为0);break;}Console.WriteLine(number1 / number2);break;default:break;}}catch (Exception ex){Console.WriteLine(ex);}}这时候我们分析一下 首先逻辑是没有问题的如果后期修改怎么办是否需要将完整的代码拿出来修改如果我们后期需要增加一个开平方根时候会影响了其他运算的逻辑如果我们现在需要开发另外一个平台的计算器功能我们能都将这个代码拿过去直接复用 先回答第一个问题这个代码比较简单修改起来也比较方便但是如果项目需求比较大我们可能会话费很长时间去找当时写的代码这时候会非常话费时间那么我们可以将逻辑层和业务层分开代码如下 业务层划分出来 public class Operation{public static double GetResult(double number1,double number2,string symbol) {double result 0;switch (symbol){case :result number1 number2;break;case -:result number1 - number2;break;case *:result number1 * number2;break;case /:if (number2 0d){Console.WriteLine(被除数不能为0);break;}result number1 / number2;break;default:break;}return result;}}逻辑层 while (true){try{Console.WriteLine(请输入第一个数字一);double number1 double.Parse(Console.ReadLine());Console.WriteLine(请输入运算符);string symbol Console.ReadLine();Console.WriteLine(请输入第一个数字二);double number2 double.Parse(Console.ReadLine());double result Operation.GetResult(number1,number2,symbol);Console.WriteLine(结果为result);}catch (Exception ex){Console.WriteLine(ex);}}这时候是否显得比较整洁之后修改的时候我们直接使用Operation这个脚本修改即可 回答第二个问题 如果这时候我们需要增加一个需求当我们做➕法运算的时候我们得到的值始终是要多➕2的这时候我们如果按照当前的方法修改的话我们需要改动Operation这个类中的GetResult方法即可但是这个方法里面包含了4个逻辑算式如果这时候不小心动了其他的怎么办所以这时候我们就要引入面向对象知识封装继承多态的方式去修改当前代码。代码如下 public class Operation{private double m_number1;private double m_number2;public double Number1 { get { return m_number1; } set { m_number1 value; } }public double Number2 { get { return m_number2; } set { m_number2 value; } }public virtual double GetResult() {double result 0;return result;}}public class Add : Operation {public override double GetResult(){double result Number1 Number2;return result;}}public class Subtract : Operation{public override double GetResult(){double result Number1 - Number2;return result;}}public class Multiply : Operation{public override double GetResult(){double result Number1 * Number2;return result;}}public class Divide : Operation{public override double GetResult(){if(Number2 0)throw new Exception(除数不能为0);double result Number1 / Number2;return result;}}继承 修改业务层层增加两个属性并且重写一个方法在定义四个不同的运算符类分别继承业务层Operation根据不同的方式重写基类方法 这里回答第三个问题 如何复用我们当前写的东西呢这里可能对于刚开始编程的人来说不会区分对象这里我们将每一个运算式分别定义一个对象然后这里的每一个对象分别有两个属性数字一和数字二这样理解就比较清晰既然明白了对象我们就将面向对象的多态和简单工厂设计模式引入到里面从而达到我们所写代码的复用性代码如下 简单工厂多态 public static Operation CreateOperation(string symbol) {Operation oper null;switch (symbol){case :oper new Add();break;case -:oper new Subtract();break;case *:oper new Multiply();break;case /:oper new Divide();break;default:break;}return oper;}业务层解耦合 public class Operation{private double m_number1;private double m_number2;public double Number1 { get { return m_number1; } set { m_number1 value; } }public double Number2 { get { return m_number2; } set { m_number2 value; } }public virtual double GetResult() {double result 0;return result;}}public class Add : Operation {public override double GetResult(){double result Number1 Number2;return result;}}public class Subtract : Operation{public override double GetResult(){double result Number1 - Number2;return result;}}public class Multiply : Operation{public override double GetResult(){double result Number1 * Number2;return result;}}public class Divide : Operation{public override double GetResult(){if(Number2 0)throw new Exception(除数不能为0);double result Number1 / Number2;return result;}}主控制台 class Program{static void Main(string[] args){while (true){try{Console.WriteLine(请输入第一个数字一);double number1 double.Parse(Console.ReadLine());Console.WriteLine(请输入运算符);string symbol Console.ReadLine();Console.WriteLine(请输入第一个数字二);double number2 double.Parse(Console.ReadLine());Operation oper;oper OperationFactory.CreateOperation(symbol);oper.Number1 number1;oper.Number2 number2;Console.WriteLine(结果为oper.GetResult());}catch (Exception ex){Console.WriteLine(ex);}}}}总结 巧妙的使用面向对象的封装继承和多态会让我们后期的维护节约不少时间提高了开发的效率当我们将代码移植到别的平台的时候我们只需要将业务层Operation 和 OperationFactory移植即可方便调用。
http://www.dnsts.com.cn/news/148847.html

相关文章:

  • 徐州网站建设多少钱湘潭手机网站
  • 公司免费网站注册房屋中介做网站的
  • 山东网站建设好不好安庆市网站建设
  • 北京手机网站制作公司清徐网站建设
  • 南通模板网建站导航网址网站怎么做
  • 定制版网站建设费用盐城网站建设代理商
  • 鞍山百度网站怎么制作福田网络
  • 广州网站制作长沙wordpress页面结构
  • 携程网站联盟宝塔默认安装wordpress
  • 西安高端品牌网站汝州市城乡建设局网站
  • 河南网站备案所需资料网页设计dw成品
  • 网站排名提升软件用织梦做外文网站
  • 做游戏交易网站wordpress 上传apk
  • 网站做很久了百度没收录ai可以做网站吗
  • 酒店品牌设计网站建设网站域名备案需要资料
  • 禅城区企业网站建设我帮你建站
  • 住宅项目建设背景西宁网站建设优化案例
  • 做网站一直不知道做什么网站做电影网站怎么选服务器
  • 恩施北京网站建设做网站需要什么编程语言
  • 做的不错的网站商丘网络有限公司
  • 浏阳网站开发公司crm管理软件
  • 厦门 公司网站建设微软的网页制作软件
  • 建立网站主机做景观要用的植物网站
  • 余姚网站开发网站如何做直播
  • 网站开发网站页面许昌做网站九零后
  • 长沙市模板网站邮箱登录
  • 攻击网站常用方法wordpress网站 app
  • 网站配色 绿色中山谷歌推广
  • 怎么在网站挂黑链接怎么发布网站
  • 金融企业网站制作博客社区类网站模板下载