帮助类或包装类

问题描述 投票:0回答:1

我有一个 MyClass 类,其成员为 myString

public class MyClass {
    private String myString;
    //more members, legacy class with 10000 lines

    public String getMyString() {
        return myString;
    }

    public void setMyString(String myString) {
        this.myString = myString;
    }
}

我在另一个包中还有一个类 MyStringHelper,它以某些方式修改字符串,例如

public class MyStringHelper {
    public static void modifyMyString(MyClass myClass) {
        // do something with myString from myClass
        myClass.setMyString("BLABLA");
    }

    public static void modifyMyStringII(MyClass myClass) {
        // do something with myString from myClass
        String old = myClass.getMyString();
        myClass.setMyString(old + "BLABLA");
    }
}

此实现依赖于开发人员仅使用 MyStringHelper 而不是 MyClass::setMyString,这是不可取的。

说到设计模式,解决这个问题的优雅方法是什么?使用代表 myString 的类不是更好的方法吗

public class MyString {
    private String myString;

    public MyString(Trans trans) {
        this.myString = myString;
    }

    public String getMyString() {
        return myString;
    }

    public void modifyMyString() {
        ...
    }

    public void modifyMyStringII() {
        ...
    }
}

抱歉,我想不出更好的标题。我正在开发一个遗留项目,这已经简化了很多。

java design-patterns
1个回答
0
投票

使用 POO 的最佳解决方案是使用代表字符串的类。

一个对象是:

  1. 代表状态的字段
  2. 一个或多个初始化初始状态的构造函数
  3. 修改状态的方法

您的新类负责提供一致的状态,因此最好提供安全的方法来修改字段值。

大多数时候修改其他类实例的内部字段是一种不好的做法。

© www.soinside.com 2019 - 2024. All rights reserved.