Java 对于仅在一个类变量中存在差异的两个类,什么是合适的模式?
详细地说。在这个问题上,我用了一个简单的例子。但在现实生活中,只有一个状态变量存在差异的方法存在巨大的逻辑。 例子。我有两个类,它们的方法具有相同的逻辑。这两个类的区别在于方法中使用的类变量Java 对于仅在一个类变量中存在差异的两个类,什么是合适的模式?,java,inheritance,design-patterns,Java,Inheritance,Design Patterns,详细地说。在这个问题上,我用了一个简单的例子。但在现实生活中,只有一个状态变量存在差异的方法存在巨大的逻辑。 例子。我有两个类,它们的方法具有相同的逻辑。这两个类的区别在于方法中使用的类变量 class A { private String str = "A"; void method() { System.out.print(str); } } class B { private String str = "B"; void metho
class A {
private String str = "A";
void method() {
System.out.print(str);
}
}
class B {
private String str = "B";
void method() {
System.out.print(str);
}
}
我想使用继承可以实现这个结果
abstract class Abs {
void method() {
System.out.print(getStr());
}
abstract String getStr();
}
class A extends Abs {
String getStr() {
return "A";
}
}
class B extends Abs {
String getStr() {
return "B";
}
}
这是个好办法吗?或者还有其他的,或者设计模式来实现我的目标?提前感谢。如果只是值上的差异,那么它们应该是同一类的两个实例 我只需将“变量”数据传递给构造函数,就可以使用它了
class A {
private String str;
public A(String str) {
this.str = str;
}
public void method() {
System.out.print(str);
}
}
那么使用它的时候呢,
A a = new A("a");
A b = new A("b");
a.method(); // prints "a"
b.method(); // prints "b"
如果只是值上的差异,那么它们应该只是同一类的两个实例。您可能想得太多了,或者这是一个很糟糕的示例,说明您试图完成的任务。为什么不在创建类实例时设置此变量值?在这种情况下,您应该只使用方法的参数:classA{getstring(s){return s;}最好只创建一个带有和参数的类。@desoares在这种情况下,它将毫无意义,imho。这取决于场合。我写的是一个更一般的解决方案。例如,如果在多个方法中使用
str
,效果会更好。