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

怎样建立自己网站视频网站百度权重查询网站

怎样建立自己网站视频网站,百度权重查询网站,沈阳男科医院排名哪家好,厦门正规网站建设企业在面向对象编程中#xff0c;SOLID 是五个设计原则的首字母缩写#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出… 在面向对象编程中SOLID 是五个设计原则的首字母缩写旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集在他2000年的论文《设计原则与设计模式》中首次提出。SOLID 原则包含S单一功能原则single-responsibility principleO开闭原则open-closed principleL里氏替换原则Liskov substitution principleI接口隔离原则Interface segregation principleD依赖反转原则Dependency inversion principle本文我们来介绍单一功能原则。单一功能原则在面向对象编程领域中单一功能原则Single responsibility principle规定每个类都应该有且仅有一个单一的功能并且该功能应该由这个类完全封装起来。所有它的这个类的服务都应该严密的和该功能平行功能平行意味着没有依赖。这个术语由罗伯特·C·马丁Robert Cecil Martin在他的《敏捷软件开发原则模式和实践》一书中的一篇名为『面向对象设计原则』的文章中提出。马丁表述该原则是基于《结构化分析和系统规格》一书中的内聚原则Cohesion之上的。马丁把功能职责定义为“改变的原因”并总结出一个类或者模块应该有且只有一个改变的原因。一个具体的例子就是想象有一个用于编辑和打印报表的模块。这样的一个模块存在两个改变的原因。第一报表的内容可以改变编辑。第二报表的格式可以改变打印。这两方面的改变会因为完全不同的起因而发生一个是本质的修改一个是表面的修改。单一功能原则认为这两方面的问题事实上是两个分离的功能因此他们应该分离在不同的类或者模块里。把具有不同的改变原因的事物耦合在一起的设计是糟糕的。保持一个类专注于单一功能点的一个重要的原因是它可以使类更加的健壮。回顾上面的例子如果有一个对于报表“编辑”流程的修改那么将存在极大的危险性因为假设这两个功能存在于同一个类中修改报表的“编辑”流程会导致公共状态或者依赖关系的改变从而可能使“打印”功能的代码无法正常运行。C# 示例例如考虑这样一个应用程序它接受一组形状圆形和正方形并计算该列表中所有形状的面积之和。首先创建形状类并通过构造函数设置所需的参数。对于正方形需要知道它的边长/// summary /// 正方形 /// /summary class Square {public Square(double length){SideLength length;}public double SideLength { get; init; } }对于圆形需要它的半径/// summary /// 圆形 /// /summary class Circle {public Circle(double radius){Radius radius;}public double Radius { get; init; } }接下来创建 AreaCalculator 类然后编写逻辑以计算所有提供的形状的面积。正方形的面积是用边长的平方计算的圆的面积由 π 乘以半径的平方来计算的。§糟糕的示范class AreaCalculator {private Listobject _shapes;public AreaCalculator(Listobject shapes){_shapes shapes;}/// summary/// 计算所有形状的面积总和/// /summary/// returns/returnspublic double Sum(){Listdouble areas new Listdouble();foreach (var item in _shapes){if (item is Square s){areas.Add(Math.Pow(s.SideLength, 2));}else if (item is Circle c){areas.Add(Math.PI * Math.Pow(c.Radius, 2));}}return areas.Sum();}public string Output(){return $Sum of the areas of provided shapes: {Sum()};} }要使用 AreaCalculator 类您需要实例化这个类并传入一个形状列表并显示其输出。在此我们传入一个三个形状的列表一个半径为 2 的圆一个边长为 5 的正方形一个边长为 6 的正方形。static void Main(string[] args) {var shapes new Listobject {new Circle(2),new Square(5),new Square(6)};var areas new AreaCalculator(shapes);Console.WriteLine(areas.Output()); }运行程序您会看到如下的输出Sum of the areas of provided shapes: 73.56637061435917输出正常但这并不符合单一功能原则。因为 AreaCalculator 类既计算了所有形状的面积之和又处理了输出数据的格式。考虑这样一个场景假如想要输出转换为另一种格式呢如 JSON。我们就需要去修改 AreaCalculator 类这样本来是为了修改输出数据的格式却可能会影响到计算的逻辑这明显违反了单一功能原则。§正确的示范AreaCalculator 类应该只关心计算提供的形状的面积之和不应该关心输出什么格式。下面我们来做一些修改删除 AreaCalculator 类中的 Output 方法class AreaCalculator {private Listobject _shapes;public AreaCalculator(Listobject shapes){_shapes shapes;}/// summary/// 计算所有形状的面积总和/// /summary/// returns/returnspublic double Sum(){Listdouble areas new Listdouble();foreach (var item in _shapes){if (item is Square s){areas.Add(Math.Pow(s.SideLength, 2));}else if (item is Circle c){areas.Add(Math.PI * Math.Pow(c.Radius, 2));}}return areas.Sum();} }并新增一个 SumCalculatorOutputter 类来专门处理输出格式的逻辑class SumCalculatorOutputter {protected AreaCalculator _calculator;public SumCalculatorOutputter(AreaCalculator calculator){_calculator calculator;}public string String(){return $Sum of the areas of provided shapes: {_calculator.Sum()};}public string JSON(){var data new { Sum _calculator.Sum() };return System.Text.Json.JsonSerializer.Serialize(data);} }此时我们再来修改一下 Main 中的调用static void Main(string[] args) {var shapes new Listobject {new Circle(2),new Square(5),new Square(6)};var areaCalculator new AreaCalculator(shapes);var outputer new SumCalculatorOutputter(areaCalculator);Console.WriteLine(outputer.JSON());Console.WriteLine(outputer.String()); }运行程序输出结果如下{Sum:73.56637061435917} Sum of the areas of provided shapes: 73.56637061435917现在AreaCalculator 类处理计算逻辑SumCalculatorOutputter 类处理输出格式它们各司其职遵循了单一功能原则。总结本文我介绍了 SOLID 原则中的单一功能原则single-responsibility principle并通过 C# 代码示例简明地诠释了它的含意和实现希望对您有所帮助。作者 技术译民出品 技术译站参考文档https://en.wikipedia.org/wiki/SOLIDhttps://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
http://www.yutouwan.com/news/117055/

相关文章:

  • 网站开发交易网站拓者室内设计官网拓者室内设计官网
  • 高端设计网站建设德清网站建设
  • wordpress网站模板下载失败如何做新闻自动采集网站
  • 莱芜泉网站建设谁告诉你j2ee是做网站的
  • 安全电子商务网站设计开发软件大全
  • 面包店网站建设规划书怎么免费建立自己网站
  • 做自己网站彩票安徽建站
  • 网站制作教程西安百度百科
  • 手机自助建站永久免费厦门php网站建设
  • 电子商务网站建设 填空题郑州建网站企业
  • 英文网站建设中百度浏览器入口
  • 兰州交通发展建设集团公司网站建设摩托车官网报价及图片
  • 做网站题材同步修改 wordpress
  • 公司网站转微信小程序做电商网站用什么语言
  • 瑞安网站四川省建设厅
  • 南京新标特企业网站哪家广告做的wordpress标签后缀名html
  • 网站毕业设计代做公司管理系统是系统软件吗
  • 查找做影评的工作网站淮北市建筑
  • 运输网站建设网店美工设计实训步骤
  • 自己建设网站赚钱网站推广成功案例
  • 海城区建设局网站一个微信小程序要多少钱
  • 秦皇岛网站设计制作石家庄369招聘信息网
  • 怎么用lls做网站导航网站 php
  • 万江区网站建设在北京注册公司有什么好处
  • 网站建站方式有哪些app开发做网站
  • 做网站去哪里找客户广安市城乡建设规划局网站
  • 网站视频制作五河网站建设哪家好
  • 什么主题的网站容易做点备案网站的黑名单
  • 阿里云网站备案入口湖北省建设信息港网站
  • 建设银行镇海支行网站奉贤注册公司