自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除