产品接口:Auto此接口用于描述各种具体的产品。
具体产品:Car,Bus,Truck。
静态工厂类:StaticFactory类中具有静态的工厂方法。
客户类:Client类调用静态工厂生产各种Auto的实现对象。
代码1 Auto.java:
package com.model.FactoryMethod.SimplePattern; /** *抽象汽车类 * */ public abstract class Auto { /** * 车型名称 */ private String name; /** *抽象的工作方法 */ abstract public void run(); public String getName() { return name; } public void setName(String name) { this.name = name; } }
代码2 Car.java:
package com.model.FactoryMethod.SimplePattern; /** *轿车 */ public class Car extends Auto { /** *构造方法 */ public Car(){ this.setName("轿车"); } /** * 重写run方法 */ @Override public void run() { System.out.println("启动"+this.getName()); } }
代码3 Bus.java:
package com.model.FactoryMethod.SimplePattern; /* * 巴士 */ public class Bus extends Auto { /** *构造方法 */ public Bus(){ this.setName("巴士"); } /** *重写run方法 */ @Override public void run() { System.out.println("启动"+this.getName()); } }
代码4 Truck.java:
package com.model.FactoryMethod.SimplePattern; /** *卡车 */ public class Trunk extends Auto { /* * 构造方法 */ public Trunk(){ this.setName("卡车"); } /** * 重写run方法 */ @Override public void run() { System.out.println("启动"+this.getName()); } }
代码5 StaticFactory.java:
package com.model.FactoryMethod.SimplePattern; /** *静态工厂 */ public class StaticFactory { /** * 工厂方法 * @param autoId车型编号 * @return具体车对象 */ public static Auto createAuto(int autoId){ switch(autoId){ case 1: return new Car(); case 2: return new Bus(); case 3: return new Trunk(); default: /* * 如果没有此种车型,抛出运行时异常 */ throw new RuntimeException("没有这种车型"); } } }
代码6 Client.java:
package com.model.FactoryMethod.SimplePattern; /** * 客户端类 * @author Administrator * */ public class Client { public static void main(String[] args) { /* * 调用静态工厂创建对象 */ Auto auto1 = StaticFactory.createAuto(1); auto1.run(); Auto auto2 = StaticFactory.createAuto(2); auto2.run(); Auto auto3 = StaticFactory.createAuto(3); auto3.run(); } |