Java設計模式之Factory 方法模式

來源:互聯網
上載者:User

標籤:

lFactory 方法模式概述?Factory 方法模式中抽象工廠類負責定義建立對象的介面,具體對象的建立工作由繼承抽象工廠的具體類實現。l優點?用戶端不需要在負責對象的建立,從而明確了各個類的職責,如果有新的對象增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的代碼,後期維護容易,增強了系統的擴充性l缺點?需要額外的編寫代碼,增加了工作量

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

工廠介面:publicinterface Factory {public abstract AnimalcreateAnimal();}

具體狗類:publicclass Dog extends Animal {}

具體貓類:publicclass Cat extends Animal {}

開始,在測試類別中每個具體的內容自己建立對象,但是,建立對象的工作如果比較麻煩,就需要有人專門做這個事情,所以就製造了一個專門的類來建立對象。發現每次修改(主要是後期添加)工廠代碼太麻煩,用Factory 方法改進,針對每一個具體的實現提供一個具體工廠。

狗工廠:publicclass DogFactoryimplements Factory {

  public Animal createAnimal(){…}

        }

貓工廠:publicclass CatFactoryimplements Factory {

  public Animal createAnimal(){…}

        }


具體代碼如下:
Animal抽象類別:
package 建立型_Factory 方法模式;public abstract class Animal {public abstract void eat();}

Dog類:
package 建立型_Factory 方法模式;public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃肉");}}

Cat類:
package 建立型_Factory 方法模式;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("貓吃魚");}}

Factory介面:
package 建立型_Factory 方法模式;public interface Factory {public abstract Animal createAnimal();}

專門建立狗工廠的DogFactory類:
package 建立型_Factory 方法模式;//這個工廠主要造狗,但是別人不知道,因為是返回Animalpublic class DogFactory implements Factory {@Overridepublic Animal createAnimal() {return new Dog();}}
專門建立貓工廠的CatFactory類:
package 建立型_Factory 方法模式;//專門建立貓工廠public class CatFactory implements Factory {@Overridepublic Animal createAnimal() {return new Cat();}}

主方法AnimalMain類:
package 建立型_Factory 方法模式;public class AnimalMain {public static void main(String[] args) {//需求:我要買只狗Factory factory = new DogFactory();Animal animal = factory.createAnimal();animal.eat();System.out.println("------------");//需求:我要買只貓factory = new CatFactory();//要買貓的話,這裡程式就把工廠給換成造貓的那個工廠了animal = factory.createAnimal();animal.eat();}}




Java設計模式之Factory 方法模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.