Java 面向对象16种设计原则总结版(模版).docx 立即下载
2025-08-25
约3.7万字
约61页
0
39KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Java 面向对象16种设计原则总结版(模版).docx

Java面向对象16种设计原则总结版(模版).docx

预览

免费试读已结束,剩余 56 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Java面向对象16种设计原则总结版(模版)

第一篇:Java面向对象16种设计原则总结版(模版)Java面向对象16种设计原则一类的设计原则依赖倒置原则-DependencyInversionPrinciple(DIP)2里氏替换原则-LiskovSubstitutionPrinciple(LSP)3接口分隔原则-InterfaceSegregationPrinciple(ISP)4单一职责原则-SingleResponsibilityPrinciple(SRP)5开闭原则-TheOpen-ClosedPrinciple(OCP)二包的设计原则重用发布等价原则-ReleaseReuseEquivalencyPrinciple(REP)7无环依赖原则-TheAcyclicDependenciesPrinciple(ADP)8稳定依赖原则-TheStableDependenciesPrinciple(SDP)9稳定抽象等价原则-TheStableAbstractionsPrinciple(SAP)10共同封闭原则-TheCommonClosurePrinciple(CCP)11全部重用原则-TheCommonReusePrinciple(CRP)三扩展原则迪米特法则-LeastKnowledgePrinciple(LKP)13黑盒原则-BBP(BlackBoxPrinciple)14缺省抽象原则-DAP(DefaultAbstractionPrinciple)15接口设计原则-IDP(InterfaceDesignPrinciple)16不要构造具体的超类原则-DCSP(Don'tConcreteSupperclassPrinciple)1.DependencyInversionPrinciple(DIP)里氏替换原则所有引用基类的地方必须能透明地使用其子类的对象。也就是说,只有满足以下2个条件的OO设计才可被认为是满足了LSP原则:A不应该在代码中出现if/else之类对子类类型进行判断的条件。以下代码就违反LSP定义。if(objtypeofClass1){dosomething}elseif(objtypeofClass2){dosomethingelse}B子类应当可以替换父类并出现在父类能够出现的任何地方,或者说如果我们把代码中使用基类的地方用它的子类所代替,代码还能正常工作。里氏替换原则LSP是使代码符合开闭原则的一个重要保证。同时LSP体现了:1)类的继承原则:如果一个继承类的对象可能会在基类出现地方出现运行错误,则该子类不应该从该基类继承,或者说,应该重新设计它们之间的关系。2)动作正确性保证:从另一个侧面上保证了符合LSP设计原则的类的扩展不会给已有的系统引入新的错误。类的继承原则:RobertC.Martin举了Rectangle和Square的例子。这里沿用这个例子,但用Java语言对其加以重写,并忽略了某些细节只列出下面的精要部分来说明里氏替换原则对类的继承上的约束。1.classRectangle{2.doublewidth;3.doubleheight;4.5.publicdoublegetHeight(){6.returnheight;7.}8.publicvoidsetHeight(doubleheight){9.this.height=height;10.}11.publicdoublegetWidth(){12.returnwidth;13.}14.publicvoidsetWidth(doublewidth){15.this.width=width;16.}17.}18.19.classSquareextendsRectangle{20.publicvoidsetHeight(doubleheight){21.super.setHeight(height);22.super.setWidth(height);23.}24.25.publicvoidsetWidth(doublewidth){26.super.setHeight(width);27.super.setWidth(width);28.}29.}这里Rectangle是基类,Square从Rectangle继承。这种继承关系有什么问题吗?假如已有的系统中存在以下既有的业务逻辑代码:voidg(Rectangler){r.setWidth(5);r.setHeight(4);if(r.getWidth()*r.getHeight()!=20){thrownewRuntimeException();}}则对应于扩展类Square,在调用既有业务逻辑时:Rectanglesquare=newSquare();g(square);时会抛
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Java 面向对象16种设计原则总结版(模版)

文档大小:39KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用