当前位置: 首页 > 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.sadfv.cn/news/117055/

相关文章:

  • 注册网站域名需要什么资料医疗器械评价一个网站设计的好坏
  • 绵阳住房和城乡建设局网站鹰潭市城乡建设局网站
  • 网站欢迎界面源码网络舆情监测与研判
  • 免费gif动图在线制作网站泰安大众网
  • 红河州住房和建设局网站平凉网站设计
  • 有代做统计图的网站吗快速排名优化推广排名
  • 自己做的网站怎么让别人访问金戈枸橼酸西地那非
  • 合肥网站建站推广做kegg的网站
  • 自己做的网站如何加视频教程广安公司网站建设
  • 盐城市住房和城乡建设局门户网站淄博网站建设同圈科技
  • 上海营销网站制作目前最好的网站建设企业
  • 注册 网站开发 公司广东网站建设十大品牌
  • 手机网站404页面模板辽宁工程信息招标网
  • 视频推广计划seo案例分析及解析
  • 网站ppt缩略图海南新闻在线新闻中心
  • 厦门做网站维护的公司自己做的网站怎么设置关键词
  • soho做网站多少钱优化软件seo排名
  • 怎么做自己的快递查询网站怎么做网站的后台管理系统
  • jsp网站建设项目wordpress里的模板
  • 网站如何做直播轮播商务网站信息审核的重要性在于
  • 深圳在哪些网站找什么好处有没有做课题很好的网站
  • 温州专业手机网站制作哪家便宜网站开发学些什么软件
  • 出版社网站建设解决方案服务商
  • 采集网站会收录吗大连新图闻科技
  • 招聘网站建设方案建筑设计防火规范
  • 怎么用apache做网站网校网站模板
  • 最好的网站统计网页截图快捷键是什么
  • 怎么样免费建设网站线上推广员是做什么的
  • wordpress子站共享用户附近的网站设计开发
  • 中国建设造价信息网站wordpress 兼职