不同的方法在一个对象中需要不同的属性

Different methods need different attributes in one object

我有给定的网络服务。 (这只是一个例子,真正的更复杂,但它有同样的问题。)服务有三个方法,这三个方法都有一个人作为参数,需要其他东西。 (我无法更改实体或方法。)

实体(人)(它只有一个默认构造函数):

private String name;
private int age;
private Address address;
private List<String> hobbies;
private List<Person> friends;

我需要用我自己的对象填充对象。我需要写一个"converter"。它的最佳实践是什么?

我的解决方案:

我认为你可以通过适当使用装饰器模式来获得你想要的东西: https://en.wikipedia.org/wiki/Decorator_pattern

  1. 创建一个只设置必填字段的构建器听起来不错。

  2. 您可以继承此 class 以满足您的每个需求并实现您自己的构造函数

    public class Target {
        // fields
    }
    
    public class Purpose1 extends Target {
        public Purpose1(String name, int age) {
            // set fields or do whatever you wish
        }
    }
    
    public class Purpose2 extends Target {
        public Purpose2(String address, String name, int age) {
            // set fields or do whatever you wish
        }
    }
    
    public class Purpose3 extends Target {
        public Purpose3(...) {
            // set fields or do whatever you wish
        }
    }
    

然后您可以使用 subclasses 的实例,其中 class Target 是必需的。