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

漳浦县城乡规划建设局官方网站网站建站请示

漳浦县城乡规划建设局官方网站,网站建站请示,景观建设网站,网页制作的收获开一个小专题——详细总结一下软件设计模式原则#xff0c;这部分在《软计》和《java设计模式》中算是很重要的知识点#xff0c;值得展开详细讲解一下~首先介绍的是【迪米特法则】 一.定义 迪米特法则又称为最少知识原则#xff0c;其定义为#xff1a;一个软件实体应当尽…开一个小专题——详细总结一下软件设计模式原则这部分在《软计》和《java设计模式》中算是很重要的知识点值得展开详细讲解一下~首先介绍的是【迪米特法则】 一.定义 迪米特法则又称为最少知识原则其定义为一个软件实体应当尽可能少的与其他实体发生相互作用。 一个软件实体应当尽可能少的与其他实体发生相互作用每一个软件单位对其他的单位都只有最少的知识而且局限于那些与本单位密切相关的软件单位。迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖因此很容易使得系统的功能模块功能独立相互之间不存在或很少有依赖关系。迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系也希望能通过它的友元类来转达。因此应用迪米特法则有可能造成的一个后果就是系统中存在大量的中介类这些类之所以存在完全是为了传递类之间的相互调用关系——这在一定程度上增加了系统的复杂度。 英文缩写为LOD 如果两个软件实体无须直接通信那么就不应当发生直接的相互调用可以通过第三方转发该调用。其目的是降低类之间的耦合度提高模块的相对独立性。 二.描述 如果一个系统满足迪米特法则那么当其中一个软件实体发生变化时就会尽量少的影响其他软件实体扩展会相对容易这是对软件实体之间通信的限制迪米特法则要求限制软件实体之间通信的宽度和深度。 迪米特法则还有几种定义形式包括不要和陌生人说话、只与你的直接朋友通信在迪米特法则中对于一个对象其朋友包括以下几类 当前对象本身(this)以参数形式传入到当前对象方法中的对象当前对象的成员对象如果当前对象的成员对象是一个集合那么集合中的元素也都是朋友。当前对象创建的对象 任何一个对象如果满足上面的条件之一就是当前对象的“朋友”否则就是“陌生人”。在应用迪米特法则时一个对象只能与直接朋友发生交互不能与“陌生人”发生直接交互好处在于降低耦合~ 迪米特法则要求我们在设计系统时应该尽量减少对象之间的交互如果两个对象不必直接通信那么这两个对象就不应该发生任何直接的相互作用如果其中一个对象需要调用另外一个对象的某个方法时可以通过【友元类】转发这个调用。 在迪米特法则运用到系统设计中时要注意以下几点 在类的划分上应该尽可能的创建松耦合的类类之间的耦合度越低复用率越高一个松耦合的类发生修改不会对关联的类造成太大的影响。在类的结构设计上每一个类都应当尽可能的降低其成员变量和成员方法的访问权限。在类的设计上只要有可能一个类型应当设计成不变类。在对其他类的引用上一个对象对其他对象的引用应该降到最低。 三.案例 假设现在有一段时间需要你学习某些内容有代码如下 public class Time{public void studyMath() {// do something}public void studyChinese() {// do something}public void studyEnglish() {// do something}public void study() {studyEnglish();studyChinese();studyMath();} }public class Person {private Time time;public void Now() {// 学习什么都可以// 但是你发现Study类所有的方法都是公开的, 现在不知道该先学习哪个time.studyMath();time.study();//也可以是time.studyMath();time.studyEnglish();} } 上述代码违背了迪米特原则即对于对象time此时不知道该学习什么——有多个方法可以调用~ 学一门还是三门都学 如果改为如下的样式则正确 public class Time{private void studyMath() {// do something}private void studyChinese() {// do something}private void studyEnglish() {// do something}public void study() {studyEnglish();studyChinese();studyMath();} }public class Person {private Time time;public void Now() {// 学习什么都可以// 但是你发现Study类所有的方法都是公开的, 现在不知道该先学习哪个time.studyMath();time.study();//也可以是time.studyMath();time.studyEnglish();} }总结就是一句话——尽可能降低现有的耦合避免直接调用。
http://www.pierceye.com/news/696161/

相关文章:

  • 增城网站公司电话西安高端网站建设首选
  • 信息流广告素材网站零基础学做网站
  • 北京服饰网站建设实训百度搜索引擎的总结
  • 营销型网站建设的一般过程包括哪些环节?体育视频网站建设
  • 门户网网站seo怎么做电子商务平台怎么注册
  • 凡科网站插件代码阿里云网站备案后
  • 网站用什么系统好用免费网站建设找哪家
  • 网站到期续费吗网站开发是培训
  • 别人帮做的网站怎么修改怎么做产品推广和宣传
  • 国内返利网站怎么做php建设网站工具
  • 网站设计教程文档创业商机网农村
  • 宁夏交通建设质监局官方网站免费注册二级域名的网站
  • 网站门户设计网站建设有没有做的必要
  • 建模师的就业前景整站优化工具
  • 微信公众号怎么做链接网站网站404 原因
  • 安卓手机做服务器网站网站设计时多页面切换时什么控件
  • 长沙正规网站建设价格网站推广怎么发外链
  • 专业版装修用什么网站做导航条深圳网站制作易捷网络
  • 哪个公司建设网站好手机网站维护费
  • 中山高端网站建设wordpress调用分类文章列表
  • 营销网站的专业性诊断评价和优化做视频网站需要什么资质
  • 河南广告制作公司网站西班牙语网站设计公司哪家好
  • 做业务一般要注册哪些网站wordpress prepare
  • wordpress 鼠标经过seo网站内容优化有哪些
  • 单页网站制作视频教程深圳有哪些软件外包公司
  • 嘉兴电子商务网站建设wordpress如何添加页面子目录
  • 教育在线网站怎样做直播seo网站推广怎样
  • 响应式的网站建设一个多少钱百度域名解析
  • 东莞做网站卓诚网络免费大数据分析网站
  • 网站用什么图片格式好seo学徒招聘