Java设计模式之工厂方法、抽象工厂模式 程序 总结
来源:互联网 发布:js游戏制作教程 编辑:程序博客网 时间:2024/04/29 14:58
工厂模式包括:工厂方法(特例:简单工厂),抽象工厂
1.工厂方法模式
抽象工厂类:
package com.factory.abstractfactory;import com.factor.abstractproduct.Moveable;public abstract class MoveableFactory { public abstract Moveable create();}
具体工厂类:
package com.factory.specificfactory;import com.factor.abstractproduct.Moveable;import com.factory.abstractfactory.MoveableFactory;import com.factory.specificproduct.Broom;public class BroomFactory extends MoveableFactory { @Override public Moveable create() { return new Broom(); }}
package com.factory.specificfactory;import com.factor.abstractproduct.Moveable;import com.factory.abstractfactory.MoveableFactory;import com.factory.specificproduct.Car;public class CarFactory extends MoveableFactory { @Override public Moveable create() { return new Car(); }}
抽象产品类:
package com.factor.abstractproduct;public interface Moveable { void go();}
具体产品类:
package com.factory.specificproduct;import com.factor.abstractproduct.Moveable;public class Broom implements Moveable { @Override public void go() { System.out.println("扫帚去东北broom"); }}
package com.factory.specificproduct;import java.util.ArrayList;import java.util.List;import com.factor.abstractproduct.Moveable;public class Car implements Moveable {// private Car() {} private static Car car = new Car(); //单例// private static List<Car> cars = new ArrayList<Car>(); //多例 public static Car getInstance() { return car; } public void go() { System.out.println("开车去东北car"); }}
测试类:
package com.factory.main;import com.factor.abstractproduct.Moveable;import com.factory.abstractfactory.MoveableFactory;import com.factory.specificfactory.BroomFactory;public class Test { public static void main(String[] args) {// Car c = Car.getInstance();// Car c1 = Car.getInstance();// if(c == c1) System.out.println("相同");// c.go();// Moveable m = new Plane();// Moveable m1 = Car.getInstance();// m.go();// m1.go(); MoveableFactory mf = new BroomFactory(); Moveable m = mf.create(); m.go(); }}
2.抽象工厂:
抽象工厂类:
package com.factory.abstractFactory;import com.factor.abstractProduct.Food;import com.factor.abstractProduct.Vehicle;public abstract class AbstractFactory { public abstract Vehicle createVehicle(); public abstract Food createFood();}
具体工厂
package com.factory.instanceFactory;import com.factor.abstractProduct.Food;import com.factor.abstractProduct.Vehicle;import com.factory.abstractFactory.AbstractFactory;import com.factory.instanceProduct.Apple;import com.factory.instanceProduct.Car;public class OneFactory extends AbstractFactory { @Override public Vehicle createVehicle() { return new Car(); } @Override public Food createFood() { return new Apple(); }}
package com.factory.instanceFactory;import com.factor.abstractProduct.Food;import com.factor.abstractProduct.Vehicle;import com.factory.abstractFactory.AbstractFactory;import com.factory.instanceProduct.Banana;import com.factory.instanceProduct.Plain;public class TwoFactory extends AbstractFactory { @Override public Vehicle createVehicle() { return new Plain(); } @Override public Food createFood() { return new Banana(); }}
抽象产品类
package com.factor.abstractProduct;public abstract class Food { public abstract void eat();}
package com.factor.abstractProduct;public abstract class Vehicle { public abstract void go();}
具体产品类:
package com.factory.instanceProduct;import com.factor.abstractProduct.Food;public class Apple extends Food { public void eat() { System.out.println("apple----------"); }}
package com.factory.instanceProduct;import com.factor.abstractProduct.Food;public class Banana extends Food { @Override public void eat() { System.out.println("Banana吃------"); }}
package com.factory.instanceProduct;import com.factor.abstractProduct.Vehicle;public class Car extends Vehicle { public void go() { System.out.println("car------开车去东北"); }}
package com.factory.instanceProduct;import com.factor.abstractProduct.Vehicle;public class Plain extends Vehicle { @Override public void go() { System.out.println("plain飞机--------"); }}
测试类:
package com.factory.main;import com.factor.abstractProduct.Food;import com.factor.abstractProduct.Vehicle;import com.factory.abstractFactory.AbstractFactory;import com.factory.instanceFactory.OneFactory;import com.factory.instanceFactory.TwoFactory;import com.factory.instanceProduct.Apple;import com.factory.instanceProduct.Car;public class Test { public static void main(String[] args) { AbstractFactory af = new TwoFactory(); Vehicle v = af.createVehicle(); v.go(); Food f = af.createFood(); f.eat(); }}
总结:
抽象工厂的抽象产品可能一个或多个,在只有一个产品族的情况下,则退化为工厂方法模式。
0 0
- Java设计模式之工厂方法、抽象工厂模式 程序 总结
- java设计模式示例程序之 ——简单工厂、工厂方法、抽象工厂模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式-创建模式之 简单工厂,工厂方法和抽象工厂的区别总结
- 总结:java设计模式之----抽象工厂
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- Java设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
- java设计模式之工厂模式(简单工厂,工厂方法,抽象工厂)
- 设计模式: 简单工厂, 工厂方法, 和抽象工厂总结
- JAVA设计模式之工厂模式之抽象工厂模式
- vim 与 Ctrl+q
- 一些做过的题
- Zero Sum(DFS)
- 对Xpath爬取网页数据的理解
- c++实验五-数组选择
- Java设计模式之工厂方法、抽象工厂模式 程序 总结
- Android中px、dp、sp,这些单位的区别
- null==0问题
- Mina框架学习
- 适配器模式:把方块放进圆洞
- html+jquery模拟简单的树形展开
- c++第五次作业
- printf的特殊用法
- python re.findall 遇到的小问题