2015-09-27 36 views
-1

我有一個給定的Web服務。 (這只是一個例子,真正的一個更復雜,但也有同樣的問題。)該服務有三種方法,所有三種方法都有一個人作爲參數,並且需要其他的東西。 (我不能改變的實體或方法)。不同的方法需要不同的屬性在一個對象中

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

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

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

我的解決方案:

  • Builder模式與構建的三種方法。
  • 設置所有屬性併發送未處理的開銷(在我眼中不好的解決方案)。

回答

1
  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子類的實例。

相關問題