里式代换原则

Posted on 2011-01-14 17:17  绿里奇迹  阅读(359)  评论(2编辑  收藏  举报

在Robert Martin的SOLID原则中,LSP是实现OCP的重要原则之一。

LSP规定:任何使用到子类的地方替换成父类都能正常运行,也就是说子类里面不能有,公有的且父类里面没有定义的方法。

但是考虑到现实情况,很多时候LSP无法得到保证

举个例子,在Java里,可以将接口分为两类,一类是行为接口。一类是标识型接口

行为接口比如people接口定义了人类不同行为,所有的人种都要实现这样的行为,行为接口属于对客观事物的一种抽象,这种情况下LSP是实现OCP的关键步骤

但是标识型接口不需要LSP的限制,比如Comparable,总不能要求实现Comparable的类只有compareTo一个公有方法吧

标识型接口只是赋予一个类特定的能力,以便在执行此能力的时候能统一口径,从来也不会有人会用这个接口来引用类Comparable c = new ...

所以LSP的应用还需认清接口的本质。

Copyright © 2024 绿里奇迹
Powered by .NET 8.0 on Kubernetes