Java设计模式:抽象工厂
生活随笔
收集整理的這篇文章主要介紹了
Java设计模式:抽象工厂
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文是自己的學(xué)習(xí)筆記,主要參考以下資料
- 大話設(shè)計(jì)模式,程杰著,清華大學(xué)出版社出版
- 馬士兵教育
- 1、抽象工廠應(yīng)用場景
- 2、具體代碼
- 2.1、設(shè)計(jì)抽象的產(chǎn)品簇
1、抽象工廠應(yīng)用場景
工廠模式是為了方便生產(chǎn)單一的產(chǎn)品,而抽象工廠則是為了方便生產(chǎn)一個(gè)工廠。
一個(gè)工廠可以看成是一個(gè)產(chǎn)品簇。比如一個(gè)人物類。這個(gè)人物類需要配套的武器類,攻擊方式類,交通工具類等等。那么這些類就可以看成是一個(gè)產(chǎn)品簇。
現(xiàn)在我們需要設(shè)計(jì)兩種人物,一個(gè)是現(xiàn)代人,一個(gè)是魔法世界的人。
對于現(xiàn)代人來說,武器類是槍,攻擊方式是開火,交通工具則是汽車。
對于魔法世界人來說,武器類是魔杖,攻擊方式吟唱,交通工具則是掃帚。
那現(xiàn)在就有兩個(gè)產(chǎn)品簇,我們就可以設(shè)計(jì)一個(gè)工廠,讓這個(gè)工廠能快速方便地生產(chǎn)這兩個(gè)產(chǎn)品簇。
2、具體代碼
2.1、設(shè)計(jì)抽象的產(chǎn)品簇
首先是建立一個(gè)抽象工廠類,里面定義產(chǎn)品簇里需要哪些元素。
public abstract class Character{} public abstract class Weapon{public void attack(); } public abstract class Vehicle{public void move(); } public abstract class AbstractFactory{public Character createCharacter();public Weapon createWeapon();public Vehicle createVehicle(); }## 2.2、設(shè)計(jì)具體的工廠類 那接下來就是繼承抽象工廠類 首先是現(xiàn)代人的產(chǎn)品簇 public class modernPeople extends Character{} public class Gun extends Weapon{public void attack(){System.out.println("shoot");} } public class Car extends Vehicle{public void move(){System.out.println("drive");} } public class ModernFactory{public Character createCharacter(){return new ModernPeople();}public Weapon createWeapon(){return new Gun();}public Vehicle createVehicle(){return new Car();} }
魔法世界人的產(chǎn)品簇
public class MagicPeople extends Character{} public class MagicStick extends Weapon{public void attack(){System.out.println("chant");} } public class Broom extends Vehicle{public void move(){System.out.println("fly");} } public class MagicFactory{public Character createCharacter(){return new MagicPeople ();}public Weapon createWeapon(){return new MagicStick ();}public Vehicle createVehicle(){return new Broom ();} }那使用時(shí)就變得非常簡單,關(guān)于這個(gè)人物的所有行為都是一樣的寫法,如果我們想換一種人,只需要將具體的工廠類替換一下就行。
// AbstractFactory factory = new MagicFactory(); AbstractFactory factory = new ModernFactory(); Character character = factory.createCharacter(); Weapon weapon = factory.createWeapon(); weapon.attack(); Vehicle vehicle = factory.createVehicle(); vehicle.move();總結(jié)
以上是生活随笔為你收集整理的Java设计模式:抽象工厂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RN-Flex Box---基础
- 下一篇: 优惠券系统设计思想