实战设计模式之抽象工厂

来源:互联网 发布:怎么程序员简历包装 编辑:程序博客网 时间:2024/06/05 14:40

只做代码分析,不做语义解析(高级程序员都从代码理解设计思想和UML理解设计思想)。代码来自尚学堂,UML来自本人手绘:

AbstractFactory.java

public abstract class AbstractFactory {public abstract Vehicle createVehicle();public abstract Weapon createWeapon();public abstract Food createFood();}

DefaultFactory.java

public class DefaultFactory extends AbstractFactory{@Overridepublic Food createFood() {// TODO Auto-generated method stubreturn new Apple();}@Overridepublic Vehicle createVehicle() {// TODO Auto-generated method stubreturn new Car();}@Overridepublic Weapon createWeapon() {// TODO Auto-generated method stubreturn new AK47();}}
MagicFactory.java

public class MagicFactory extends AbstractFactory {@Overridepublic Food createFood() {// TODO Auto-generated method stubreturn new MushRoom();}@Overridepublic Vehicle createVehicle() {// TODO Auto-generated method stubreturn new Broom();}@Overridepublic Weapon createWeapon() {// TODO Auto-generated method stubreturn new MagicStick();}}
Food.java

public abstract class Food {public abstract void printName();}

Vehicle.java

public abstract class Vehicle {public abstract void run();}

Weapon.java

public abstract class Weapon {public abstract void shoot();}

Apple.java

public class Apple extends Food {public void printName() {System.out.println("apple");}}

AK47.java

public class AK47 extends Weapon{public void shoot() {System.out.println("哒哒哒...");}}

Car.java

public class Car extends Vehicle {public void run() {System.out.println("冒着烟奔跑中car.......");}}

Broom.java

public class Broom  extends Vehicle{public void run() {System.out.println("一路沙尘暴飞奔而来broom.....");}}
MagicStick.java

public class MagicStick extends Weapon {@Overridepublic void shoot() {System.out.println("fire hu hu hu ...");}}

MushRoom.java

public class MushRoom extends Food {@Overridepublic void printName() {// TODO Auto-generated method stubSystem.out.println("mushroom");}}
Test.java

public class Test {public static void main(String[] args) {AbstractFactory f = new DefaultFactory();Vehicle v = f.createVehicle();v.run();Weapon w = f.createWeapon();w.shoot();Food a = f.createFood();a.printName();}}

UML图如下:

抽象工厂UML


抽象工厂的作用是生产系列成品以及系列产品的替换...

更多内容请查看我的其他blog:http://blog.csdn.net/caicongyang




原创粉丝点击