Java設計模式之簡單原廠模式

來源:互聯網
上載者:User

標籤:

設計模式之簡單工廠舉例:
l簡單原廠模式概述 ?又叫靜態Factory 方法模式,它定義一個具體的工廠類負責建立一些類的執行個體 l優點 ?用戶端不需要在負責對象的建立,從而明確了各個類的職責 l缺點

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

概述:

動物抽象類別:public abstract Animal { public abstract void eat(); }

具體狗類:public class Dog extends Animal {}

具體貓類:public class Cat extends Animal {}

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

原始碼:

package 建立型_簡單原廠模式;public abstract class Animal {public abstract void eat();}

package 建立型_簡單原廠模式;public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃肉");}}

package 建立型_簡單原廠模式;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("貓吃魚");}}

package 建立型_簡單原廠模式;//如果你想買狗或者貓,那叫這個工廠類去造出來,你就不用早了public class AnimalFactory {private AnimalFactory(){}//下面寫的static方法,但是也不是很好,因為後面很可能還要加一些方法,比如Pig,...public static Dog createDog(){return new Dog();}public static Cat createCat(){return new Cat();}//所以面向介面或抽象編程,穿什麼類型就造什麼類型,但是還是有缺陷可能傳入的不能造public static Animal createAnimal(String type){if("dog".equals(type)){return new Dog();} else if("cat".equals(type)){return new Cat();} else{return null;}}}

package 建立型_簡單原廠模式;public class AnimalMain {public static void main(String[] args) {//具體類調用,自己造狗和貓  最原始的Dog dog = new Dog();dog.eat();Cat cat = new Cat();cat.eat();System.out.println("---------");//工廠有了後,通過工廠給造  有些缺陷的//AnimalFactory af = new A..//不能再new,因為提供的是私人的構造方法Dog dog2 = AnimalFactory.createDog();Cat cat2 = AnimalFactory.createCat();dog2.eat();cat2.eat();System.out.println("---------");//工廠改進後Animal animal = AnimalFactory.createAnimal("dog");animal.eat();//重新為animal賦值animal = AnimalFactory.createAnimal("cat");animal.eat();//但是這個工廠還是有小問題的,你比如animal = AnimalFactory.createAnimal("pig");//animal.eat();//編譯不會報錯,但是運行會爆出null 指標異常//所以呢,我們在造東西(對象)時,要先判斷一下,只要是對象就要判斷if(animal!=null){animal.eat();} else{System.out.println("對不起,此工廠暫時不提供造豬pig");}}}


Java設計模式之簡單原廠模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.