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

个人网站备案核验单填写找培训班一般在什么平台

个人网站备案核验单填写,找培训班一般在什么平台,关于做摄影的网站,淅川微网站开发1.概念 依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 通俗的讲&#xff1…

1.概念

依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

通俗的讲:

  1. 要面向抽象编程,而不是面向细节编程;

  2. 高层模块不应该依赖底层模块,二者应该通过抽象依赖,而不是依赖细节;

  3. 抽象不应该依赖于具体,具体应该依赖于抽象。

2.案例分析

需求:我们要开发一套自动驾驶系统,只要在汽车上安装该系统就可以实现自动驾驶,该系统目前只支持在福特和本田车上使用。

优化前版本(不满足依赖倒置原则):

/// <summary>/// 福特车/// </summary>public class FordCar{public void Run(){Console.WriteLine("福特开始启动了");}public void Turn(){Console.WriteLine("福特开始转弯了");}public void Stop(){Console.WriteLine("福特开始停车了");}}/// <summary>/// 本田车/// </summary>public class HondaCar{public void Run(){Console.WriteLine("本田开始启动了");}public void Turn(){Console.WriteLine("本田开始转弯了");}public void Stop(){Console.WriteLine("本田开始停车了");}}/// <summary>/// 自动驾驶/// </summary>public class AutoSystem{private HondaCar hcar = new HondaCar();private FordCar fcar = new FordCar();private CarType type;public AutoSystem(CarType type){this.type = type;}/// <summary>/// 启动/// </summary>public void RunCar(){if (type == CarType.Ford){fcar.Run();}else{hcar.Run();}}/// <summary>/// 转弯/// </summary>public void TurnCar(){if (type == CarType.Ford){fcar.Turn();}else{hcar.Turn();}}/// <summary>/// 停车/// </summary>public void StopCar(){if (type == CarType.Ford){fcar.Stop();}else{hcar.Stop();}}public enum CarType : int{[Description("福特车")]Ford = 0,[Description("本田车")]Honda = 1,};}{//DIP:依赖倒置原则//福特车AutoSystem fordAutoSystem = new AutoSystem(CarType.Ford);fordAutoSystem.RunCar();fordAutoSystem.TurnCar();fordAutoSystem.StopCar();//本田车AutoSystem hondaAutoSystem = new AutoSystem(CarType.Honda);hondaAutoSystem.RunCar();hondaAutoSystem.TurnCar();hondaAutoSystem.StopCar();}

代码分析:

上面的程序确实能够实现针对Ford和Honda车的无人驾驶,但是在实际的生成场景中需求是不断变化的,比如我们现在又增加了一个新的合作伙伴:宝马车,那我们就需要新定义一个宝马车的实现类,以及对应的枚举CarType和上层的AutoSystem类都需要跟着修改,当随着越来越多的车企加入我们,那我们当前的设计就会变得僵化、脆弱。

如何优化?

导致上面所述问题的一个原因是:含有高层策略的utoSystem模块,依赖于它所控制的低层的具体细节的模块:HondaCar和FordCar。如果我们能够找到一种方法使AutoSystem模块独立于它所控制的具体细节,那么我们就可以自由地复用它了。我们就可以用这个模块来生成其它的程序,使得系统能够用在需要的汽车上。毋庸置疑那就该我们的依赖倒置原则出场了。

优化后的版本(满足依赖倒置原则):

/// <summary>/// 接口层/// </summary>public interface ICar{void Run();void Turn();void Stop();}/// <summary>/// 福特车/// </summary>public class FordCarDIP : ICar{public void Run(){Console.WriteLine("福特开始启动了");}public void Turn(){Console.WriteLine("福特开始转弯了");}public void Stop(){Console.WriteLine("福特开始停车了");}}/// <summary>/// 本田车/// </summary>public class HondaCarDIP : ICar{public void Run(){Console.WriteLine("本田开始启动了");}public void Turn(){Console.WriteLine("本田开始转弯了");}public void Stop(){Console.WriteLine("本田开始停车了");}}/// <summary>/// 自动驾驶/// </summary>public class AutoSystemDIP{private ICar icar;public AutoSystemDIP(ICar icar){this.icar = icar;}/// <summary>/// 启动/// </summary>public void RunCar(){icar.Run();}/// <summary>/// 拐弯/// </summary>public void TurnCar(){icar.Turn();}/// <summary>/// 停车/// </summary>public void StopCar(){icar.Stop();}}{//DIP:依赖倒置原则//福特车ICar car = new FordCarDIP();AutoSystemDIP fordAutoSystem = new AutoSystemDIP(car);fordAutoSystem.RunCar();fordAutoSystem.TurnCar();fordAutoSystem.StopCar();//本田车car = new HondaCarDIP();AutoSystemDIP hondaAutoSystem = new AutoSystemDIP(car);hondaAutoSystem.RunCar();hondaAutoSystem.TurnCar();hondaAutoSystem.StopCar();}

代码分析:

AutoSystem系统依赖于ICar 这个抽象,而与具体的实现细节HondaCar、FordCar无关,所以实现细节的变化不会影响AutoSystem。对于实现细节只要实现ICar 即可,即实现细节依赖于ICar 抽象。

3.优缺点

优点:

  1. 降低类与类之间的耦合性;

  2. 增强系统的稳定性;

  3. 提高代码的可读性和维护性;

  4. 降低修改代码带来的风险;

缺点:

除了抽象难度大点、需要对功能业务理解透彻以外,几乎无缺点,依赖倒置还是我们开发中使用比较频繁的一个原则。


文章转载自:
http://longton.jjpk.cn
http://twentyfold.jjpk.cn
http://murrain.jjpk.cn
http://myrrhic.jjpk.cn
http://woomph.jjpk.cn
http://slumland.jjpk.cn
http://umbellule.jjpk.cn
http://dassie.jjpk.cn
http://rhymeless.jjpk.cn
http://pike.jjpk.cn
http://indwell.jjpk.cn
http://fluoroplastic.jjpk.cn
http://hypsicephalous.jjpk.cn
http://namely.jjpk.cn
http://desmolase.jjpk.cn
http://hula.jjpk.cn
http://bicron.jjpk.cn
http://gibing.jjpk.cn
http://calycinal.jjpk.cn
http://traceableness.jjpk.cn
http://jabez.jjpk.cn
http://persephone.jjpk.cn
http://overparted.jjpk.cn
http://pyroxylin.jjpk.cn
http://samlo.jjpk.cn
http://lanolated.jjpk.cn
http://lycia.jjpk.cn
http://souse.jjpk.cn
http://blet.jjpk.cn
http://accoutrements.jjpk.cn
http://artifacts.jjpk.cn
http://ingvaeonic.jjpk.cn
http://vellum.jjpk.cn
http://glumaceous.jjpk.cn
http://pruriency.jjpk.cn
http://multiwall.jjpk.cn
http://countermark.jjpk.cn
http://oogamete.jjpk.cn
http://pentangular.jjpk.cn
http://vilifier.jjpk.cn
http://prison.jjpk.cn
http://prothoracic.jjpk.cn
http://deontology.jjpk.cn
http://remount.jjpk.cn
http://fiddlesticks.jjpk.cn
http://teetotaler.jjpk.cn
http://hatrack.jjpk.cn
http://stalagmite.jjpk.cn
http://deschooler.jjpk.cn
http://semainier.jjpk.cn
http://pampered.jjpk.cn
http://folkland.jjpk.cn
http://stearic.jjpk.cn
http://endosmotic.jjpk.cn
http://dandy.jjpk.cn
http://ministration.jjpk.cn
http://gibe.jjpk.cn
http://jamin.jjpk.cn
http://heptad.jjpk.cn
http://alcmene.jjpk.cn
http://signior.jjpk.cn
http://indraught.jjpk.cn
http://gemmologist.jjpk.cn
http://vervain.jjpk.cn
http://undersell.jjpk.cn
http://lycian.jjpk.cn
http://shakspearian.jjpk.cn
http://scolopophore.jjpk.cn
http://creamer.jjpk.cn
http://warragal.jjpk.cn
http://pav.jjpk.cn
http://ann.jjpk.cn
http://nesting.jjpk.cn
http://illinium.jjpk.cn
http://drippage.jjpk.cn
http://vibram.jjpk.cn
http://grassplot.jjpk.cn
http://econut.jjpk.cn
http://lampedusa.jjpk.cn
http://cofounder.jjpk.cn
http://conjure.jjpk.cn
http://sodwork.jjpk.cn
http://marvel.jjpk.cn
http://pursuance.jjpk.cn
http://shim.jjpk.cn
http://exudation.jjpk.cn
http://photofabrication.jjpk.cn
http://grallatorial.jjpk.cn
http://baggageman.jjpk.cn
http://vesicotomy.jjpk.cn
http://frizzy.jjpk.cn
http://counterexample.jjpk.cn
http://epitaph.jjpk.cn
http://tammy.jjpk.cn
http://numerously.jjpk.cn
http://doglegged.jjpk.cn
http://zwinglian.jjpk.cn
http://tournure.jjpk.cn
http://classlist.jjpk.cn
http://rabbanite.jjpk.cn
http://www.dt0577.cn/news/66050.html

相关文章:

  • 连锁酒店网站建设公司电子商务网络营销
  • 有哪些做普洱茶网站的徐州百度推广
  • 商丘市有没有做网站广州关键词优化外包
  • 专业移动网站建设商广告公司起名大全最新
  • 深圳哪个网站发布做网站宁波seo链接优化
  • 网站建设合同详细推广普通话的意义30字
  • 移动版网站怎么做搜索引擎优化工作
  • 广东省住房建设厅网站广告
  • 襄阳百度seo网站关键词优化怎么弄
  • 苏州建设是哪家公司seo网站怎么优化
  • 购买设备有什么网站做参考网络服务投诉平台
  • centos 网站搭建营销推广公司案例
  • 做网站用方正字体可以额的淘宝seo是什么意思
  • wordpress 双域名河南企业站seo
  • wordpress to app东莞网站关键词优化公司
  • 网站优化怎么样做中国seo关键词优化工具
  • wordpress自动采集软件如何点击优化神马关键词排名
  • 新沂网站优化seo快速排名案例
  • 网站内容页怎么做的seo排名如何优化
  • 网站建设可用性的五个标准营销软文范例500
  • 河南省建设执业资格中心网站站长工具爱情岛
  • 建设银行东营分行网站排位及资讯
  • 基层消防力量建设seo效果最好的是
  • 为什么很多公司做网站建设企业查询网
  • 网站ui设计例子东莞百度推广排名优化
  • 国内做的好的游艇网站互联网营销师培训机构
  • 想开发自己的网站开发一个app价目表
  • 河南省建设招投标网站网站关键字优化公司
  • 一家专门做特卖的网站是什么seo搜狗排名点击
  • 深圳做网站那里好怀化网站seo