可以說,我們有這樣的方法:如何擴展僅需要新參數的方法?
public List<Animal> findByKeyword(String keyword){
List<Animal> animals = new ArrayList<Animal>();
// Validate keyword is not null etc..
// hit db for animals with name like keyword and add to list
// hit db for animals with owner name like keyword and add to list
// hit db for animals with nick name like keyword and add to list
// remove duplicates in the list
return animals;
}
假設這種方法在相當多的地方使用,並假設它是一個長一點......現在好了,我想補充一個簡單的布爾是這樣的:
public List<Animal> findByKeyword(String keyword,boolean excludeDead){
// code here...
}
唯一的區別應該是這樣的:
// remove duplicates in the list
// if(excludeDead) removeDeadAnimalsFromTheList
所以我不想複製粘貼整個方法。但是我不希望將參數添加到現有方法,因爲該方法在很多地方使用(其中excludeDead =默認情況下爲false ..假設這是一項新要求..)
但是,是的,我不想讓這種變化:
// remove duplicates in the list
// if(excludeDead) removeDeadAnimalsFromTheList
因爲我unneccesarily加載所有的動物屍體,如果exludeDead是真的。所以我想要做的就是修改:
// hit db for animals with name like keyword and add to list BASED ON THE GIVEN BOOLEAN VALUE
什麼是擴展這段代碼的最佳方式?有什麼辦法讓參數可選?
請不要認爲這是一個真實的代碼,我只是試圖簡化它。
這將是不明確的,不編譯 - 注意不是不同的參數 –
@ user2310289:哦,忘記在第二種方法中刪除布爾參數。錯過了,對不起。現在編輯。 –