一、工廠模式

工廠類擁有一個工廠方法(create),接受了一個參數(shù),通過不同的參數(shù)實例化不同的產(chǎn)品類。

  1. 簡單工廠模式
  • 實現(xiàn)一:簡單工廠類
public class AnimalFactory {
//簡單工廠設計模式(負擔太重、不符合開閉原則)
public static Animal createAnimal(String name){
if ("cat".equals(name)) {
  return new Cat();
}else if ("dog".equals(name)) {
  return new Dog();
}else if ("cow".equals(name)) {
  return new Dog();
}else{
  return null;
}
}
}
  • 實現(xiàn)二:靜態(tài)工廠模式
//該簡單工廠,也稱為靜態(tài)方法工廠
public class AnimalFactory2 {
  public static Dog createDog(){
    eturn new Dog();
  }
  public static Cat createCat(){
    return new Cat();
    }
}
  1. 工廠方法模式
  • 實現(xiàn):抽象工廠類

抽象工廠是應對產(chǎn)品族概念的。

抽象出來的工廠對象,

// 抽象出來的動物工廠----它只負責生產(chǎn)一種產(chǎn)品
public abstract class AnimalFactory {
// 工廠方法
public abstract Animal createAnimal();
}

我們可以定義根據(jù)這個產(chǎn)品族里具體的產(chǎn)品類型去設計子類工廠,

// 具體的工廠實現(xiàn)類1
public class CatFactory extends AnimalFactory {
  @Override
  public Animal createAnimal() {
    return new Cat();
  }
}


// 具體的工廠實現(xiàn)類2
public class DogFactory extends AnimalFactory {
  @Override
  public Animal createAnimal() {
    return new Dog();
  }
}

總結(jié),
很明顯,簡單工廠的特點就是“簡單粗暴”,通過一個含參的工廠方法,我們可以實例化任何產(chǎn)品類,上至飛機火箭,下至土豆面條,無所不能。所以簡單工廠有一個別名:上帝類。
任何”東西“的子類都可以被生產(chǎn),負擔太重。當所要生產(chǎn)產(chǎn)品種類非常多時,工廠方法的代碼量可能會很龐大。在遵循開閉原則(對拓展開放,對修改關閉)的條件下,簡單工廠對于增加新的產(chǎn)品,無能為力。因為增加新產(chǎn)品只能通過修改工廠方法來實現(xiàn)。
抽象工廠模式增加了擴展性。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容