[Java] 设计模式之工厂系列 02-面向抽象编程 抽象工厂 - 缺点 : 产生新的产品品种的时候,改动太多
2014-01-26 13:29
671 查看
(1), JDK 中 factory 也是比比皆是。 (2), 抽象工厂 -- 换皮肤的软件
Vehicle
package com.bjsxt.dp.factory.abstractfactory; public abstract class Vehicle { public abstract void run(); }Weapon
package com.bjsxt.dp.factory.abstractfactory; public abstract class Weapon { public abstract void shoot(); }Food
package com.bjsxt.dp.factory.abstractfactory; public abstract class Food { public abstract void printName(); }AbstractFactory
package com.bjsxt.dp.factory.abstractfactory; public abstract class AbstractFactory { public abstract Vehicle createVehicle(); public abstract Weapon createWeapon(); public abstract Food createFood(); }Carextends Vehicle
package com.bjsxt.dp.factory.abstractfactory; public class Car extends Vehicle { public void run() { System.out.println("冒着烟奔跑中car......."); } }Broom extends Vehicle
package com.bjsxt.dp.factory.abstractfactory; public class Broom extends Vehicle { public void run() { System.out.println("一路沙尘暴飞奔而来broom....."); } }AK47
extends Weapon
package com.bjsxt.dp.factory.abstractfactory; public class AK47 extends Weapon { public void shoot() { System.out.println("哒哒哒..."); } }MagicStick extends Weapon
package com.bjsxt.dp.factory.abstractfactory; public class MagicStick extends Weapon { @Override public void shoot() { System.out.println("fire hu hu hu ..."); } }Apple extends Food
package com.bjsxt.dp.factory.abstractfactory; public class Apple extends Food { public void printName() { System.out.println("apple"); } }MushRoom extends Food
package com.bjsxt.dp.factory.abstractfactory; public class MushRoom extends Food { @Override public void printName() { // TODO Auto-generated method stub System.out.println("mushroom"); } }DefaultFactory extends AbstractFactory
package com.bjsxt.dp.factory.abstractfactory; public class DefaultFactory extends AbstractFactory { @Override public Food createFood() { // TODO Auto-generated method stub return new Apple(); } @Override public Vehicle createVehicle() { // TODO Auto-generated method stub return new Car(); } @Override public Weapon createWeapon() { // TODO Auto-generated method stub return new AK47(); } }MagicFactory
extends AbstractFactory
package com.bjsxt.dp.factory.abstractfactory; public class MagicFactory extends AbstractFactory { @Override public Food createFood() { // TODO Auto-generated method stub return new MushRoom(); } @Override public Vehicle createVehicle() { // TODO Auto-generated method stub return new Broom(); } @Override public Weapon createWeapon() { // TODO Auto-generated method stub return new MagicStick(); } }
抽象工厂针对是产品系列, 工厂方法则只是在子类中实例化对象,能控制生产过程。
相关文章推荐
- [Java] 设计模式之工厂系列 02-面向抽象编程 抽象工厂 - 缺点 : 产生新的产品品种的时候,改动太多
- [Java] 设计模式之工厂系列 01 简单工厂 - 缺点 :产生产品系列的时候很麻烦,会工厂泛滥
- [Java] 设计模式之工厂系列 01 简单工厂 - 缺点 :产生产品系列的时候很麻烦,会工厂泛滥
- Java设计模式笔记之抽象工厂代码示例
- JAVA设计模式之二抽象工厂
- Java 设计模式中,简单工厂、工厂方法、抽象工厂的区别
- 设计模式学习(一):java 面向对象特征:抽象、封装、多态、继承
- java设计模式-抽象工厂
- java设计模式之工厂系列_Factory_Series_DesignPattern
- JAVA设计模式之二抽象工厂
- 设计模式java-02.工厂模式
- [Java] 设计模式之工厂系列 04 (自定义模拟 spring 读取xml文件 beanFactory)
- JAVA设计模式:工厂模式之抽象工厂
- JAVA设计模式之二抽象工厂
- [Java] 设计模式之工厂系列 04 (自定义模拟 spring 读取xml文件 beanFactory)
- Java设计模式学习02——工厂模式
- java设计模式_抽象工厂
- 设计模式系列10---高度定制的抽象工厂方法模式
- JAVA设计模式之二抽象工厂
- 【Java设计模式02】——工厂模式