我有一个Java类可以扩展两个第三方类中的任何一个,我无法改变。我可以在编译时选择这些实现中的任何一个,除了“extends”声明之外我不会更改我的类。不幸的是,我需要选择在运行时使用哪个实现,而不是在编译时。在运行时在这两个实现之间进行选择而不重复整个派生类的最佳方法是什么?
答案 0 :(得分:5)
听起来你需要Strategy pattern。
策略模式(也称为 政策模式)是一个特殊的 软件设计模式,即 算法可以在运行时选择。
因此,您的Java类应该包含对您要使用的两个类之一的引用,并桥接到该实现。您可以在运行时选择您选择的实现。从您的问题描述中不清楚,但如果您的两个第三方类实现了一个公共接口,那么您的Java类很可能实现此接口,您可以直接映射到引用的第三方类。