我有几个遗留类,它们没有公共(public)接口(interface)或父类(super class),但具有相同的方法。大多数这些方法都受到保护。
无论如何,我想编写一个在这些类上始终执行相同例程的服务,从而始终调用相同的方法,无论它是什么类。
通常我会给这些类一个公共(public)接口(interface),但我无法修改遗留类,尽管我必须使用它们。
有机会将他们分组吗?也许是我不知道的设计模式?
class classA {
protected String getData() {
return "I'm class A";
}
}
class classB {
protected String getData() {
return "I'm class B";
}
}
class MyGeneralService {
void execute(<ClassA or B> clazz) {
//do something
clazz.getData();
//do something
//call another methods that are common to both classes
}
}
最佳答案
这听起来正是 Adapter Pattern 的问题类型。旨在解决。
本质上,用关联的适配器类包装每个遗留类,该类确实实现了一个公共(public)接口(interface)。适配器类应该简单地转发适当的方法调用。
注意:您想要从外部世界调用的方法受到保护
这一事实很奇怪。适配器模式不会帮助您调用以前无法调用的方法(当然,除了通过反射)。
关于java - 如何将不共享相同接口(interface)且不可修改的类分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20266536/