設計模式--工廠模式

1、簡單工廠模式

簡單工廠模式也稱靜態工廠模式,它定義一個工廠類專門負責創建一些類的實例。

優點
    * 客戶端不需要在負責對象的創建,從而明確了各個類的職責
缺點

     * 這個靜態工廠類負責所有對象的創建,如果有新的對象增加,或者某些對象的創建方式不同,就需要不斷的修改工廠類,不利於後期的維護。

案例演示:

    * 動物抽象類:public abstract Animal { public abstract void eat(); }
    * 具體狗類:public class Dog extends Animal {}
    * 具體貓類:public class Cat extends Animal {}

開始,在測試類中每個具體的內容自己創建對象,但是,創建對象的工作如果比較麻煩,就需要有人專門做這個事情,所以就知道了一個專門的類來創建對象。

所以將創建對象的功能專門交給一個類:創建動物工廠 AnimalFactor

public class AnimalFactory {
			private AnimalFactory(){}
		
			public static Animal createAnimal(String animalName) {
				if(“dog”.equals(animalName)) {
                    ruturn new Dog();
                }
				else if(“cat”.equals(animale)) {
		            ruturn new Cat();
				}else {
					return null;
				}
			}
		} 

2、工廠模式

與簡單工廠模式的區別是工廠模式的高度提升到了抽象工廠的高度,意思就是創建一個抽象工廠,比如創建動物的工廠,這個定義了個抽象工廠,包含一個抽象的創建動物的方法,就這樣可以了,然後需要把這個工廠用來幹嘛(創建什麼動物完成由使用者決定),如果要創建狗,就創建一個狗的工廠(即這個類實現這個抽象工廠類),其他同理。

優點
    * 客戶端不需要在負責對象的創建,從而明確了各個類的職責,如果有新的對象增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的代碼,後期維護容易,增強了系統的擴展性
缺點
    * 需要額外的編寫代碼,增加了工作量

案例演示:

使用到的類或接口如下

        動物抽象類:public abstract Animal { public abstract void eat(); }
        工廠接口:public interface Factory {public abstract Animal createAnimal();}
        具體狗類:public class Dog extends Animal {}
        具體貓類:public class Cat extends Animal {}

//狗工廠
public class DogFactory implements Factory {
			public Animal createAnimal() {…}
}
//貓工廠
public class CatFactory implements Factory {
	public Animal createAnimal() {…}
}  

有錯誤的地方歡迎指出,感謝閱讀~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章