- 博客(2)
- 收藏
- 关注
原创 从规约到 Liskov 替换原则:深入理解子类型多态
Liskov 替换原则要求:如果 S 是 T 的子类型,则类型 T 的对象可以替换为类型 S 的对象(即类型 T 的对象可以替换为子类型 S 的任何对象),而不改变 T 的任何所需属性。逆变(contra-variance),与协变相反,意味着子类型方法要弱化前置条件(参数),进而强化 spec。协变(co-variance),意味着子类型方法要强化后置条件(返回值与异常),进而强化 spec。因此,Java 继承机制中,子类型方法 override 时,参数类型必须与父类型方法一致。
2024-05-27 17:08:42
861
2
原创 面向对象编程(OOP)的 SOLID 设计原则
我们希望遵循 OCP,在添加新的形状类型的同时,而不修改已有的代码,关键技术在于使用。一个类不应该强迫它的客户端依赖于它们不需要使用的方法,即:只提供必要的接口。ISP 要求我们不应设计 " 胖 " 接口," 胖 " 接口会导致不够聚合。此时,当再次面对变化时,例如增加一个照明设备,我们只需要新增一个类,实现。在上述示例中,如果需要新增一种形状,如三角形,那么需要修改。中实现,会导致类的职责不清晰,增加了类的复杂性和耦合性。的相关方法,改动分支语句,较为繁琐。),还需要控制 LED,白炽灯等。
2024-05-26 22:02:39
684
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人