做好软件开发的扩展性,必须了解的六大设计原则
旺道跨圈推广 -> 最新发布

我们常说软件开发要尽量具有良好的可扩展性,做到高内聚低耦合。那么究竟该如何实现呢?在面向对象软件设计领域有一系列大家所认可的设计原则,依据这些原则来设计软件,就可以让软件有很好的可扩展性,其中最重要的一条原则就是开闭原则,其他原则可以说都是以开闭原则为基础的。

文章图片1

开闭原则是软件设计原则的基础

开闭原则

文章图片2

Bertrand Meyer

开闭原则(Open-Closed Principle, OCP)是最重要的面向对象设计原则,由Bertrand Meyer于1988年提出:

一个软件实体应当对扩展开放,对修改关闭。

软件实体应尽量在不修改原有代码的情况下进行扩展。

其中软件实体可以是指一个软件模块、一个由多个类组成的结构或者是一个独立的类。

任何软件都面临一个问题,就是它们的需求会随着时间的推移而发生变化。当软件系统要面对新的需求时,应当尽量保证系统的整体框架是稳定的,不会有大的改变。

如果一个软件设计符合开闭原则,那么就比较容易对系统进行扩展,软件系统在具有适应性和灵活性的同时,也具备较好的稳定性和延续性。

为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。在Java、C#、C++等OOP编程语言中,都提供了接口、抽象类等抽象化的语言机制,通过它们可以定义软件的抽象层,再通过具体的实现类来扩展。如果要修改系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的功能即可。

单一职责原则

单一职责原则(SRP:Single Responsibility Principle)是最简单的面向对象设计原则,它用于控制类的粒度大小。定义如下:

一个类只负责一个功能领域中的职责,或者可以这样说,就一个类而言,应该只有一个引起它变化的原因。

在软件系统中,一个类承担的功能越多,被复用的可能性就越小,这些功能耦合在一起,当其中一个发生变化时,还可能会影响其他功能。因此要将功能分离,除非多个功能总是同时发生变化,才可将它们封装在同一个类中。

单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员具有较强的分析设计能力和实践经验。这个原则不仅是针对类的设计,在微服务架构中,同样适用于服务的功能划分。不要把不相关领域的功能都放在同一个服务中。

里氏替换原则

文章图片3

图灵奖得主Barbara Liskov教授

里氏代换原则(LSP: Liskov Substitution Principle)由2008年图灵奖得主Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其定义如下:

所有引用基类(父类)的地方必须能透明地使用其子类的对象。

里氏代换原则要求:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,但反过来则不成立。

由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

依赖倒转原则

依赖倒转原则(DIP: Dependency Inversion Principle)是OOP设计的主要实现机制之一,由Robert C. Martin在1996年提出。定义如下:

抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

文章图片4

高层模块只针对接口编程,不依赖低层模块

在实现依赖倒转原则时,我们需要针对抽象层编程,将具体类的对象通过依赖注入(DI: Dependency Injection)的方式注入到其他对象中。

常用的注入方式有三种,分别是:构造注入设值注入(Setter注入)和接口注入。构造注入是指通过构造函数来传入具体类的对象,设值注入是指通过Setter方法来传入具体类的对象,而接口注入是指通过在接口中声明的业务方法来传入具体类的对象。这些方法在定义时使用的是抽象类型,在运行时再传入具体类型的对象,由子类对象来覆盖父类对象。

5 接口隔离原则

接口隔离原则(ISP:Interface Segregation Principle)与单一职责原则类似只不过单一职责原则说的是类,接口隔离原则说的是接口。其定义如下:

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

当一个接口太大时,我们需要将它分割成一些更细小的接口。每一个接口应该承担一种相对独立的角色,不该干的事不干,该干的事都要干。

6 迪米特原则

文章图片5

适配器模式就是LoD原则的一种体现

迪米特原则(LoD:Law of Demeter)来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目。迪米特法则又称为最少知识原则(LKP:Least Knowledge Principle),其定义如下:

只和朋友交流,不和陌生人说话。也就是说,一个软件实体应当尽可能少地与其他实体发生相互作用。

如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展就会相对容易,这是对软件实体之间通信的宽度和深度的限制,通过限制交互可降低系统的耦合度,使类与类之间保持松散的耦合关系。

总结

掌握这些软件开发的设计原则,对我们开发高内聚、低耦合的系统是非常有帮助的。互联网系统的功能迭代非常频繁,如果在软件设计阶段就做好足够的扩展性设计,那么后面的功能修改都会变得更加容易,上线发布的周期也会大大缩短。千万不要为了赶进度,牺牲了扩展性设计,还是要尽量多花点时间在设计上。

教育培训机构-如何策划节日招生?
做教育培训,最重要的事情莫过于招生了。面对不同的学员,招生方…于招生。目标不同,活动策划也会不一样。② 活动主题要鲜明不仅主题要鲜明,主题之间要有连续性。就像看连续剧一样,一集接一集,一环扣一环。策划好一系列活动,一个接一个来,从多个角度延续活动的宣传,突出主题,引起关注度。常用的招生方式有:体验课招…-------------想要获得更多运营技巧、doc文案,
教育培训:如何提高满班率和续班率
什么是满班率?就是实际人数除以计划招生人数,这个值就是满班率…员有流失是正常的,但要保证一个概率。在保障老学员续期的基础上,我们也要大胆创新,开设网络课程,拓宽招生区域。实地课程录制后,进一步发行到商弈云课上,通过商弈云课系统转成真实流量,网上有人点击观看,点赞,可以按点播量分佣金。助你在日常的营销推…-----------------------想要获得更多运
培训机构难盈利的问题出在哪里,如何实现盈利?
竞争白热化实地培训班、托管辅导班竞争白热化了,利润越来越稀薄…现没有多少盈利。还有一部分负责人在刚招生时,掌握了不少资金,开始盲目扩张,盲目做课程推广,以期待获得更多生源和收费,从而使培训班陷入了这种恶性循环的陷阱里。其实这些到手的钱,并不是你的利润,而是你未来要支出的钱。如遇到行业快速发展时期,或者…-----想要获得更多运营技巧、doc文件,请“关注”并“转
“差异化”经营是网络培训赚钱的关键所在
“差异化经营”这个词,相信大多数人都耳熟能详,但要做到的却是…。在现有的基础上更新升级或者资源整合就是对现有的产品或者技术,进行升级版本,或者通过一些资源整合,成一个项目。你的技能以前是用来生产或制造产品,现在是把技能升级成知识培训,转换云课堂。直白一点就是可以让老师自行录好课程并上传到学校的商弈云课…在着缺点和不足之处。在创新改革时,要从功能、服务、价格等方面
教育培训行业是如何运作的?
以前读书时,学校附近有个小摊卖鸡蛋灌饼。刚开始的时候只有一家….%,剩下的一对一和多人大班其实市场份额都很小。家长报培训班,是希望孩子能够学到知识。老师通过课上教学和课后辅导来满足孩子的需求,达到成绩提高的目标。我见过上百人的大培训班,为什么一个班这么多人?因为是名师讲课,但人太多坐后面,基本听不到重…是你的核心竞争力。想要得到用户的认同,你就必须做到产品质量好
旺道:实体店怎么做网络营销?
年纪大了,体力不好了,便赚不了什么钱了。所以,一定要在年轻的…写文案都是非常头痛的事情,那么下面我会给大家提供一个解决方案。在互联网营销系统里面有很多细节营销,软文营销就是其中一种,但好多小白头痛写文章,所以可以用这个方法也一样可以植入广告语,或者是图片广告,轮显切换广告,使用 旺道营销系统,也就是每…以帮你吸引海量精准粉丝。有了粉丝,你通过广告、产品、服务就可
旺道:圈里圈外,铁饭碗距离瓷饭碗究竟有多远?
中国人爱混圈子,从线下一直混到线上,各种奇形怪状的圈子勾勒出…不能推则敷衍了事,盼着混到主任科员退休;一种是老黄牛式,踏踏实实、兢兢业业工作,但拙于人际关系,活干得最多,但依旧不见晋升迹象;还有一种是提线木偶式,你扯一下线他动一下,好像脑子和身体是分离的。我突然一拍脑袋,这是提前衰老的迹象啊,工作内容…即使选择留在铁饭碗圈里,也应保有随时离开的思想警惕和进行必要
旺道:微信要双开了,朋友圈推广更好做了
现在手机只能登一个微信,如两个,三个微信的小伙伴们就只能退出…动推广工具、 设置头像点击头像图标,点“+”选择图片,可以上传你的企业,个人头像,产品服务等。旺道微信朋友圈广告免费朋友圈广告-旺道、 设置推广主题点“广告”,再点“+”设置推广的主题(类别),填好中文主题,以及你的网址。教你不花一分钱做朋…简直就是一劳永逸哟。如果你点开发布的文章看不到广告,那就是你
旺道:如何能让网站多个关键词排名百度首页?
最近接了一个单,做婴儿游泳馆加盟的。优化推广范围是全国,但是…泳馆加盟哪家好”、“婴儿游泳加盟多少钱”这类与我息息相关的词。如何能让网站多个关键词排名百度首页?但客户并不认同,客户说这个词指数低,或者说搜的人不多。是,这是一方面原因。但是,指数低有什么关系,你是卖产品还是卖指数。搜的人不多有什么关系,…实现广告效果最大化,来满足大众化的广告需求。对于这样的四两拔
旺道:如何成为网络营销达人?这个技能帮你节省80%的时间
在某次名师讲坛上,听到了一个让人警醒的故事。说有个村子缺水,…准的产品。现在已经不是新鲜事物,好多企业因为百度竞价的高额费用,头疼不已,所以做网站关键词优化排名,成为了企业必选的推广项目。做优化也要做到有成效,不然就是一分钱也是昂贵的。用 旺道智能机器人 就可以持续代替人工去做,它非常聪明,只要你够耐…手,设备先进,你多努力奔跑也于事无补。简单说,要去一个地方,

此文章来源来互联网,如果你有任何版权冲突,可以联络我们,微信号:WANCOME,QQ:1444641。加我们时,请说明来意,我们将优先处理你的问题。




旺道商弈  | 圈广告  | 一键推  | 圈推广  | 圈营销  | 圈推广  | 跨圈推
粤ICP备10213132号
旺道商标注册证号:8608864
Copyright © 2016 环企网络信息科技有限公司 版权所有