設計模式之簡單工廠.

來源:互聯網
上載者:User

什麼是簡單工廠設計模式?

工廠是生產零組件的地方,在程式中簡單工廠就是生產對象.其實簡單工廠是設計模式裡面一個較為簡單的設計模式,也是比較常用的設計模式之一.

為什麼要用簡單工廠設計模式?

例如我們寫一個飛行遊戲程式,其中飛機的各種子彈是需要不停的new的.那麼在程式中我們需要更具不同的子彈類型產生不同子彈對象.

switch(bullettype){

case bullettype1:

         new 類型1子彈;

break;

case bullettype2:

         new 類型2子彈;

break;

case bullettype3:

         new 類型3子彈;

break;

}

這樣一段代碼要是直接寫在某一個類裡是會增加耦合度的,所以我們要對這段代碼進行封裝.下面用到的封裝風格就是簡單工廠設計模式了.

封裝有三個好處這裡順便提一下:

(1)降低耦合

(2)封裝出來的類在內部可以實現自由修改

(3)類具有清晰的對外介面

怎麼用簡單工廠設計模式?

簡單工廠UML

 

下面是代碼部分:

BulletFactory.class

public class BulletFactory {public static final int BULLETTYPEONE = 0;public static final int BULLETTYPETWO = 1;public static final int BULLETTYPETHREE = 2;public static Bullet createBullet(int bulletType){switch(bulletType){case BULLETTYPEONE:return new TypeOneBullet();case BULLETTYPETWO:return new TypeTwoBullet();case BULLETTYPETHREE:return new TypeThreeBullet();default:return null;}}}

Bullet.class

public class Bullet {}

TypeOneBullet.class

public class TypeOneBullet extends Bullet{public TypeOneBullet(){System.out.println("產生出類型一子彈");}}

TypeTwoBullet.class

public class TypeTwoBullet extends Bullet{public TypeTwoBullet(){System.out.println("產生出類型二子彈");}}

TypeThreeBullet.class

public class TypeThreeBullet extends Bullet{public TypeThreeBullet(){System.out.println("產生出類型三子彈");}}

最後寫了一個Main.class來實現以上類的功能.

public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubBulletFactory.createBullet(BulletFactory.BULLETTYPEONE);BulletFactory.createBullet(BulletFactory.BULLETTYPETWO);BulletFactory.createBullet(BulletFactory.BULLETTYPETHREE);}}

運行結果如下:

產生出類型一子彈
產生出類型二子彈
產生出類型三子彈

總結:

簡單工廠設計模式體現了類封裝的優點,使得代碼耦合性降低,類與類之間的關係簡潔明了.

 

聯繫我們

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