发动机产品族:
package abstract_factory_mode; /** * 发动机类型 */ public interface Engine { /** * 转动 */ void run(); /** * 启动 */ void start(); } /** * 高端发动机 */ class LuxuryEngine implements Engine { @Override public void run() { System.out.println("转的快!"); } @Override public void start() { System.out.println("启动快!可以自动启停!"); } } /** * 低端发动机 */ class LowEngine implements Engine { @Override public void run() { System.out.println("转的慢!"); } @Override public void start() { System.out.println("启动慢!"); } }
座椅产品族:
package abstract_factory_mode; /** * 座椅类型 */ public interface Seat { /** * 按摩 */ void massage(); } /** * 高端座椅 */ class LuxurySeat implements Seat { @Override public void massage() { System.out.println("可以自动按摩!"); } } /** * 低端座椅 */ class LowSeat implements Seat { @Override public void massage() { System.out.println("不能按摩!"); } }
轮胎产品族:
package abstract_factory_mode; /** * 轮胎类型 */ public interface Tyre { /** * 旋转 */ void revolve(); } /** * 高端轮胎 */ class LuxuryTyre implements Tyre { @Override public void revolve() { System.out.println("旋转磨损慢!"); } } /** * 低端轮胎 */ class LowTyre implements Tyre { @Override public void revolve() { System.out.println("旋转磨损快!"); } }
工厂类型:
package abstract_factory_mode; /** * 工厂类型, 抽象工厂 */ public interface CarFactory { /** * 生产(创建)发动机 */ Engine createEngine(); /** * 生产座椅 */ Seat createSeat(); /** * 生产轮胎 */ Tyre createTyre(); }
低端工厂类:
package abstract_factory_mode; /** * 低端工厂类 */ public class LowCarFactory implements CarFactory { /** * 生产(创建)低端发动机 */ @Override public Engine createEngine() { return new LowEngine(); } /** * 生产低端座椅 */ @Override public Seat createSeat() { return new LowSeat(); } /** * 生产低端轮胎 */ @Override public Tyre createTyre() { return new LowTyre(); } }
高端工厂类:
package abstract_factory_mode; /** * 高端工厂类 */ public class LuxuryCarFactory implements CarFactory { /** * 生产(创建)高端发动机 */ @Override public Engine createEngine() { return new LuxuryEngine(); } /** * 生产高端座椅 */ @Override public Seat createSeat() { return new LuxurySeat(); } /** * 生产高端轮胎 */ @Override public Tyre createTyre() { return new LuxuryTyre(); } }
类图:
测试类:
package abstract_factory_mode; public class Client { public static void main(String[] args) { //创建低端工厂对象 CarFactory factory = new LowCarFactory(); //生产低端产品族 Engine e = factory.createEngine(); Seat s = factory.createSeat(); Tyre t = factory.createTyre(); //测试功能 e.run(); e.start(); s.massage(); t.revolve(); //创建高端工厂对象 CarFactory factory2 = new LuxuryCarFactory(); //生产高端产品族 Engine e2 = factory2.createEngine(); Seat s2 = factory2.createSeat(); Tyre t2 = factory2.createTyre(); //测试功能 e2.run(); e2.start(); s2.massage(); t2.revolve(); //大家看到了, 模式有时需要组合使用, 要想拼成一部车, 需要用到建造者模式! } }
执行结果:
转的慢! 启动慢! 不能按摩! 旋转磨损快! 转的快! 启动快!可以自动启停! 可以自动按摩! 旋转磨损慢!
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7125922.html