如何在不扩展类的情况下实现dynamic多态

我在采访中被问及如何在不扩展类的情况下实现dynamic多态性。 如何才能做到这一点?

装饰者devise模式 ,利用封装是你在找什么。

多态性通过inheritance:

 class Cat { void meow() { // meow... } } class Lion extends Cat { } 

通过封装的多态性(Decorator模式):

 interface Cat { void meow(); } class Lion implements Cat { private Cat cat; void meow() { this.cat.meow(); } } 

PS。 更多关于装饰者: http : //www.yegor256.com/2015/02/26/composable-decorators.html

简单的解决scheme是编写一个实现接口的类,而不是扩展一个基类。

另一个解决scheme是创build一个dynamic代理…这本质上是一个聪明的方式实现一个接口,而不明确写入类。 有关详细信息,请参阅Proxy javadoc 。

是的,这些都是(或可以)装饰模式的例子,虽然这里的关键是实现技术,而不是devise模式。

根据我的经验,在大多数求职面试中,问题并不是太复杂,大部分时间只是棘手的问题,所以如果他们特别要求多态而不扩展类,那么我会说:

是的,你可以通过实现一个接口而不是扩展一个类来实现dynamic多态

那么如果他们要求更多的select,那么可以提出代理,模式或其他的东西。

希望能帮助到你!