学习笔记----------abstractfactory抽象工厂
2011-02-24 09:58
288 查看
一般产生多个实例
模拟代码:
abstractfactory.java
DefaultFactory.java 实现AbstractFactory接口
MagicFactory.java 实现AbstractFactory接口
Food.java
Vehicle.java
Weapon.java
Apple.java
Car.java
AK47.java
Test.java 这里DefaultFactory f = new DefaultFactory();中的new DefaultFactory();换成new MagicFactory()就可以换掉一套的行为v.run();,w.shoot();,a.printName();, new MagicFactory()为自定义的(你自己仿照DefaultFactory工厂写吧)
模拟代码:
abstractfactory.java
package abstractfactory; public abstract class AbstractFactory { public abstract Vehicle createVehicle(); public abstract Weapon createWeapon(); public abstract Food createFood(); }
DefaultFactory.java 实现AbstractFactory接口
package 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.java 实现AbstractFactory接口
package 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(); } }
Food.java
package abstractfactory; public abstract class Food { public abstract void printName(); }
Vehicle.java
package abstractfactory; public abstract class Vehicle { public abstract void run(); }
Weapon.java
package abstractfactory; public abstract class Weapon { public abstract void shoot(); }
Apple.java
package abstractfactory; public class Apple extends Food { public void printName() { System.out.println("apple"); } }
Car.java
package abstractfactory; public class Car extends Vehicle { public void run() { System.out.println("ð���̱�����car......."); } }
AK47.java
package abstractfactory; public class AK47 extends Weapon{ public void shoot() { System.out.println("������..."); } }
Test.java 这里DefaultFactory f = new DefaultFactory();中的new DefaultFactory();换成new MagicFactory()就可以换掉一套的行为v.run();,w.shoot();,a.printName();, new MagicFactory()为自定义的(你自己仿照DefaultFactory工厂写吧)
package abstractfactory; public class Test { public static void main(String[] args) { //DefaultFactory f = new DefaultFactory(); AbstractFactory f = new DefaultFactory(); Vehicle v = f.createVehicle(); v.run(); Weapon w = f.createWeapon(); w.shoot(); Food a = f.createFood(); a.printName(); } }
相关文章推荐
- 设计模式学习笔记(一):抽象工厂
- C#面向对象设计模式纵横谈 学习笔记3 Abstract Factory 抽象工厂
- 简单工厂、工厂方法和抽象工厂的学习笔记
- 简单工厂、工厂方法和抽象工厂的学习笔记
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- 学习笔记之设计模式:抽象工厂
- iOS学习笔记(5)——设计模式之工厂方法、抽象工厂
- 设计模式学习笔记(一)——Abstract Factory抽象工厂
- 简单工厂、工厂方法和抽象工厂的学习笔记
- 设计模式学习笔记(一):抽象工厂
- 设计模式学习笔记(4)抽象工厂
- JAVA学习笔记-----设计模式之工厂模式
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- 设计模式学习-每日一记(4.抽象工厂)
- 一 简单工厂模式——设计模式学习笔记
- C++ Primer 学习笔记_52_类与数据抽象 -构造函数【下】
- Header First设计模式学习笔记——工厂模式
- Java设计模式笔记之抽象工厂代码示例
- c#学习笔记——抽象类、抽象方法、抽象属性
- SICP学习笔记及题解---构造过程抽象(二)