这更像是一个代码“架构”问题。 我有两个类(class)一和二。它们都需要数据和样式,因此我使用在父类中实现的两个方法 getData 和 getStyles。 在第二类中,我对数据和样式执行一些额外的“转换”或处理,然后返回它。
这是一个好方法吗?有办法让它变得更好吗?例如,我在类一和类二中使用两个相同的行 getData() 和 getStyles()。
public abstract class Base {
protected Data getData() {
// some code to get data and return it
}
protected Styles getStyles() {
// some code to get styles and return it
}
}
public class One extends Base {
public String generateResult() {
Data data = getData();
Styles styles = getStyles();
return getStreamedResult(data, styles);
}
}
public class Two extends Base {
public String generateResult() {
Data data = getData();
Styles styles = getStyles();
Transforms transformedResult = performTransform(data, styles);
return getStreamedResult(transformedResult);
}
}
最佳答案
这样:
public abstract class Base {
protected Data getData() {
// some code to get data and return it
}
protected Styles getStyles() {
// some code to get styles and return it
}
public String generateResult() {
Data data = getData();
Styles styles = getStyles();
Transforms transformedResult = performTransform(data, styles);
return getStreamedResult(transformedResult);
}
public abstract Transforms performTransform(Data data, Styles styles);
}
public class One extends Base {
@Override
public Transforms performTransform(Data data, Styles styles) {
// unit transform, data and styles are unmodified
}
}
public class Two extends Base {
@Override
public Transforms performTransform(Data data, Styles styles) {
// intended transforms for class Two
}
}
在每个子类中,您只需指定转换是什么。
关于java - 设计模式: How to structure the following scenario into proper classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143419/