什麼是簡單工廠設計模式?
工廠是生產零組件的地方,在程式中簡單工廠就是生產對象.其實簡單工廠是設計模式裡面一個較為簡單的設計模式,也是比較常用的設計模式之一.
為什麼要用簡單工廠設計模式?
例如我們寫一個飛行遊戲程式,其中飛機的各種子彈是需要不停的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);}}
運行結果如下:
產生出類型一子彈
產生出類型二子彈
產生出類型三子彈
總結:
簡單工廠設計模式體現了類封裝的優點,使得代碼耦合性降低,類與類之間的關係簡潔明了.