簡體   English   中英

不同的方法在一個對象中需要不同的屬性

[英]Different methods need different attributes in one object

我有給定的Web服務。 (這只是一個例子,實際的例子比較復雜,但是存在相同的問題。)該服務具有三種方法,並且這三種方法都以一個人作為參數,並且還需要其他的東西。 (我無法更改實體或方法。)

實體(人)(它只有一個默認構造函數):

private String name;
private int age;
private Address address;
private List<String> hobbies;
private List<Person> friends;
  • 方法1需要名稱和年齡。
  • 方法2需要地址名稱和年齡。
  • 方法3需要全部。

我需要從我自己的對象中填充對象。 我需要寫一個“轉換器”。 最佳做法是什么?

我的解決方案:

  • 具有三種方法的生成器的生成器模式。
  • 設置所有屬性並發送未處理的開銷(在我看來這是不好的解決方案)。

我認為您可以通過適當使用裝飾器模式來獲得所需的東西: https : //en.wikipedia.org/wiki/Decorator_pattern

  1. 創建僅設置必填字段的構建器聽起來不錯。

  2. 您可以從每個類繼承此類,並實現自己的構造函數

     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 } } 

然后,您可以使用需要Target類的子類實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM