简单工厂模式实现的产品不具备复杂性,工厂不具备抽象性。工厂方法模式将各种产品使用不同的工厂来生产,各种工厂中的创建方法可以互相独立地改变,并将这些工厂类抽象出一个共同的父类。
代码如下:
代码1 Client.java:
package com.model.FactoryMethod; /** * 客户端类 * @author Administrator * */ public class client { public static void main(String[] args) { /* * 调用工厂方法创建不同对象 */ /** * 创建变量(使用抽象类描述,面向接口编程) */ Factory factory; Auto auto; /** * 创建Car */ factory = new CarFactory(); auto = factory.createAuto(); auto.run(); /* * 创建Bus */ factory = new BusFactory(); auto = factory.createAuto(); auto.run(); /** * 创建Truck */ factory = new TruckFactory(); auto = factory.createAuto(); auto.run(); } } 代码2 Factory.java;
package com.model.FactoryMethod; /** *工厂方法模式 */ public abstract class Factory { /** * 抽象生产方法,将被子类重写 * @return Auto类的子类实例 */ abstract public Auto createAuto(); }
代码 3 CarFactory.java:
package com.model.FactoryMethod; /** * 具体工厂类 * @author Administrator * */ public class CarFactory extends Factory { /** * 重写父类生产方法 */ @Override public Auto createAuto() { return new Car(); } }
代码4 BusFactory.java:
package com.model.FactoryMethod; /** * 具体工厂类 * @author Administrator * */ public class BusFactory extends Factory { /** * 重写父类生产方法 */ @Override public Auto createAuto() { return new Bus(); } } 代码 5 TruckFactory.java:
package com.model.FactoryMethod; /** * 具体工厂类 * @author Administrator * */ public class TruckFactory extends Factory { /** * 重写父类方法 */ @Override public Auto createAuto() { return new Truck(); } } |