Oop 不良面向对象设计的特点
我正在读关于面向对象设计原则的书。我发现了一个糟糕设计的特点Oop 不良面向对象设计的特点,oop,design-principles,Oop,Design Principles,我正在读关于面向对象设计原则的书。我发现了一个糟糕设计的特点 很难改变,因为每一个改变都会影响到太多的其他人 系统的各个部分。(刚性) 进行更改时,系统中意外的部分会中断。 (脆弱性) 它很难在另一个应用程序中重用,因为它不能被重用 与当前应用程序分离。(不动) 我能理解前两个,但第三个对我来说有点难理解。 它是关于在基类中提取相关类的公共特征,从重复的代码中生成方法吗?但是它说很难在另一个应用程序中重用。通常我们编写特定于上下文的代码,而而不是工程不是一个好主意,我们有像YAGNI这样的好原则
很难在另一个应用程序中重用。
通常我们编写特定于上下文的代码,而而不是工程不是一个好主意,我们有像YAGNI
这样的好原则(你不会需要它)我发现这些想法有点矛盾
请提供您对此的宝贵意见。移动示例:
假设以下类别:
畜生
犬科动物
狗
正如您所料,Canine
扩展了Animal
和Dog
扩展了Canine
设计动物的方法之一是给它一种方法,它可以打印出树皮。也许,这个应用程序的最初目的只是为了狗,因此,talk
吠叫方法很好。但是在另一个代码库中重用它会导致问题
假设我们想要扩展动物
并创建鸟
。鸟不叫:)
很难想象有人会这样做。但这种情况经常发生。基类没有被抽象出来,这会导致代码放错位置,从而难以纠正/重用
有人可能会说,Bird
类可以覆盖talk
方法。但是,如果另一个开发人员出于另一个原因扩展了Animal
,可能会忘记重写该方法。。。等等
我知道这不是最好的例子,但它说明了问题所在