tle*_*z24 2 java oop design-patterns object object-oriented-analysis
我想知道对于我的场景应该采用什么最好的OOP 设计模式。
场景:
我有两个班级,A 班和 B 班。我想将 ClassA 转换为新的 ClassB,但是 ClassA 可能会更改其成员变量和方法。这意味着可能必须更新 ClassA 转换为 ClassB 的方式。
促进从 ClassA 到新 ClassB 的转换的最佳 OOP 设计是什么?
目标:
创建一个设计模式,允许轻松更改将 ClassA 转换为 ClassB 的方式。
例子:
A级
public class ClassA {
private String actionName;
// With some getters & setters
}
Run Code Online (Sandbox Code Playgroud)
B级
public class ClassB {
private String action; // Note the subtle difference
// With some getters & setters
}
Run Code Online (Sandbox Code Playgroud)
处理程序
public class Handler {
ClassB classB = new ClassB();
// Convert ClassB to ClassA
This.publish(ClassA);
}
Run Code Online (Sandbox Code Playgroud)
您需要一个了解 ClassA 和 ClassB 的所有成员的类型。将 ClassA 或 ClassB 相互耦合不是一个好主意,因此您通常会看到第三种类型实现如下接口:
interface Converter<T, R> {
R convert(T obj);
}
Run Code Online (Sandbox Code Playgroud)
您可以为您的类实现此接口:
class AtoBConverter implements Converter<ClassA, ClassB> {
public ClassB convert(ClassA obj) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这假设 ClassA 具有允许您检查其状态的公共方法,而 ClassB 具有允许您修改其状态的构造函数/设置器。严格来说,如果所有三个类都在同一个 java 包中,则可以将这些方法/构造函数声明为包私有。