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
,效果会更好。