迪米特法则java面向对象设计原则和设计模式详解

迪米特法则  时间:2021-07-09  阅读:()

java常用的设计模式一共有多少种

1、正如上一位答主所言,java中存在23种面向对象的设计模式,分别是: 1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

2、他们遵从如下原则: 1)单一职责原则 2)里式替换原则 3)依赖倒置原则 4)接口隔离原则 5)迪米特法则 6)开闭原则 3、如果非要用几个简单的字来概括这繁杂的23种设计模式那就是“高内聚,低耦合”。

4、百度--23种设计模式,边研究原理,边敲代码,其义自见。

JAVA面向对象六大原则是什么?

1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。

这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。

其他的原则也是对它的实现提供了路径。

2) Liskov Substituition Principle(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。

”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类. 3) Dependence Inversion Principle(DIP),依赖倒换原则,“设计要依赖于抽象而不是具体化”。

换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。

这样做有什么好处呢?人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。

另外这个原则会很好的支持OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),“将大的接口打散成多个小接口”,这样做的好处很明显,我不知道有没有必要再继续描述了,为了节省篇幅,实际上我对这些原则只是做了一个小总结,如果有需要更深入了解的话推荐看《Java与模式》,MS MVP的一本巨作!^_^ 5) Composition/Aggregation Reuse Principle(CARP),设计者首先应当考虑复合/聚合,而不是继承(因为它很直观,第一印象就是“哦,这个就是OO啊”)。

这个就是所谓的“Favor Composition over Inheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。

它讲的是“一个对象应当尽可能少的去了解其他对象”。

也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

对象原则的优缺点有哪些?

优点是由于不知符合工艺过程,物流畅通; 由于上下工序衔接,存放量少; 物料搬运工作量少; 生产计划简单,容易于控制; 可使用专用设备和机械化、自动化搬运方法 缺点是设备发生故障时引起整个生产线中断; 产品设计变化将引起不知的重大调整; 生产线速度取决于最慢的机器; 维修和保养费用高。

java面向对象设计原则和设计模式详解

Java面向对象设计原则 1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。

这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。

其他的原则也是对它的实现提供了路径。

2) Liskov Substituition Principle(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。

”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类. 3) Dependence Inversion Principle(DIP),依赖倒换原则,“设计要依赖于抽象而不是具体化”。

换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。

这样做有什么好处呢?人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。

另外这个原则会很好的支持OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),“将大的接口打散成多个小接口”,这样做的好处很明显,我不知道有没有必要再继续描述了,为了节省篇幅,实际上我对这些原则只是做了一个小总结,如果有需要更深入了解的话推荐看《Java与模式》,MS MVP的一本巨作!^_^ 5) Composition/Aggregation Reuse Principle(CARP),设计者首先应当考虑复合/聚合,而不是继承(因为它很直观,第一印象就是“哦,这个就是OO啊”)。

这个就是所谓的“Favor Composition over Inheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。

它讲的是“一个对象应当尽可能少的去了解其他对象”。

也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

设计模式: 1)适配器模式 /blog/174838 2)桥接器模式 /blog/174892 3)职责链模式 /blog/174906 4)命令模式 /blog/174896 5)装饰器模式 /blog/174840 6)外观模式 /blog/174890 7)工厂模式 /blog/174831 8)享元模式 /blog/174891 9)代理模式 /blog/174887 10)单例模式 /blog/174829 11)状态模式 /blog/174897 12)策略模式 /blog/174894 13)模板模式 /blog/174893 14)访问者模式 /blog/174914

ThomasHost(月付5美元)美国/法国/英国/加拿大KVM,支持Windows

ThomasHost域名注册自2012年,部落最早分享始于2016年,还算成立了有几年了,商家提供基于KVM架构的VPS,数据中心包括美国、法国、英国、加拿大和爱尔兰等6个地区机房,VPS主机套餐最低2GB内存起步,支持Windows或者Linux操作系统,1Gbps端口不限制流量。最近商家提供了一个5折优惠码,优惠后最低套餐月付5美元起。下面列出部分套餐配置信息。CPU:1core内存:2GB硬...

CloudCone月付$48,MC机房可小时付费

CloudCone商家在前面的文章中也有多次介绍,他们家的VPS主机还是蛮有特点的,和我们熟悉的DO、Linode、VuLTR商家很相似可以采用小时时间计费,如果我们不满意且不需要可以删除机器,这样就不扣费,如果希望用的时候再开通。唯独比较吐槽的就是他们家的产品太过于单一,一来是只有云服务器,而且是机房就唯一的MC机房。CloudCone 这次四周年促销活动期间,商家有新增独立服务器业务。同样的C...

Budgetvm12核心 16G 500 GB SSD 或者 2 TB SATA 10GB  20 TB  99美金

Budgetvm(原EZ机房),2005年成立的美国老品牌机房,主打美国4个机房(洛杉矶、芝加哥、达拉斯、迈阿密)和日本东京机房的独立服务器和VPS业务,而且不限制流量,默认提供免费的1800G DDoS防御服务,支持IPv6和IPMI,多种免费中文操作系统可供选择,独立服务器主打大硬盘,多硬盘,大内存,用户可以在后台自行安装系统等管理操作!内存可定制升级到1536G,多块硬盘随时加,14TBSA...

迪米特法则为你推荐
foxmail邮箱注册如何注册FOXMAIL邮箱的帐号啊?溢出隐藏overflow:hidden是什么意思?oracle索引oracle表加索引有什么用? 请举一个例子说明谢谢调度系统生产调度系统民生电商陆金所、民生电商哪个更适合投资?系统论坛怎么进论坛什么是句柄按键精灵的句柄是什么?alphablenddelphi中都有哪些控件有AlphaBlend属性,也就是可透明文件系统类型在windows系统中,常见的文件类型主要由哪几种?数学作业数学作业是否要检查?
云南虚拟主机 看国外视频直播vps 赵容 highfrequency 灵动鬼影 炎黄盛世 河南移动网 美国免费空间 联通网站 空间首页登陆 中国电信测速网站 免费asp空间申请 wordpress中文主题 ledlamp 广东主机托管 1美元 国外免费网盘 privatetracker zcloud .htaccess 更多