不同的方法在一个对象中需要不同的属性
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;
- 方法 1 需要姓名和年龄。
- 方法 2 需要地址姓名和年龄。
- 方法3需要全部
我需要用我自己的对象填充对象。我需要写一个"converter"。它的最佳实践是什么?
我的解决方案:
- 构建器模式,构建了三种方法。
- 设置所有属性并发送未处理的开销(在我看来是糟糕的解决方案)。
我认为你可以通过适当使用装饰器模式来获得你想要的东西:
https://en.wikipedia.org/wiki/Decorator_pattern
创建一个只设置必填字段的构建器听起来不错。
您可以继承此 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
是必需的。
我有给定的网络服务。 (这只是一个例子,真正的更复杂,但它有同样的问题。)服务有三个方法,这三个方法都有一个人作为参数,需要其他东西。 (我无法更改实体或方法。)
实体(人)(它只有一个默认构造函数):
private String name;
private int age;
private Address address;
private List<String> hobbies;
private List<Person> friends;
- 方法 1 需要姓名和年龄。
- 方法 2 需要地址姓名和年龄。
- 方法3需要全部
我需要用我自己的对象填充对象。我需要写一个"converter"。它的最佳实践是什么?
我的解决方案:
- 构建器模式,构建了三种方法。
- 设置所有属性并发送未处理的开销(在我看来是糟糕的解决方案)。
我认为你可以通过适当使用装饰器模式来获得你想要的东西: https://en.wikipedia.org/wiki/Decorator_pattern
创建一个只设置必填字段的构建器听起来不错。
您可以继承此 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
是必需的。