简单工厂模式 SimpleFactory,适用于业务相对较简单地情况,少扯闲话,先上code:
~~ ICar.java ~~ 抽象产品角色接口
/** * @author VerpHen * @date 2013年9月10日 上午9:36:19 */ package org.verphen.simpleFactory; /*抽象产品角色接口:汽车Car*/ public interface ICar { /* 汽车启动 */ public void run(); /* 汽车停止 */ public void stop(); } |
~~ Benz.java ~~ 具体产品角色类
/** * @author VerpHen * @date 2013年9月10日 上午9:38:08 */ package org.verphen.simpleFactory; /*具体产品角色类:汽车-奔驰Benz*/ public class Benz implements ICar { @Override public void run() { System.out.println("奔驰启动"); } @Override public void stop() { System.out.println("奔驰停止"); } } |
~~ Ferrari.java ~~ 具体产品角色类
/** * @author VerpHen * @date 2013年9月10日 上午9:40:18 */ package org.verphen.simpleFactory; /*具体产品角色类:汽车-法拉利Ferrari*/ public class Ferrari implements ICar { @Override public void run() { System.out.println("法拉利启动"); } @Override public void stop() { System.out.println("法拉利停止"); } } |
~~ Jaguar.java ~~ 具体产品角色类
/** * @author VerpHen * @date 2013年9月10日 上午9:42:21 */ package org.verphen.simpleFactory; /*具体产品角色类:汽车-捷豹-Jaguar*/ public class Jaguar implements ICar { @Override public void run() { System.out.println("捷豹启动"); } @Override public void stop() { System.out.println("捷豹停止"); } } |
~~ SimpleFactory.java ~~ 工厂角色类
/** * @author VerpHen * @date 2013年9月10日 上午9:29:02 */ package org.verphen.simpleFactory; /*工厂角色类*/ public class SimpleFactory { /* 工厂方法,返回类型为抽象的产品角色 */ public static ICar driveCar(String carType) { /* equalsIgnoreCase() 忽略carType大小写 */ if ("Benz".equalsIgnoreCase(carType)) { return new Benz(); } else if ("Ferrari".equalsIgnoreCase(carType)) { return new Ferrari(); } else if ("Jaguar".equalsIgnoreCase(carType)) { return new Jaguar(); } return null; } } |
~~ SimpleFactoryTest.java ~~ 测试类
/** * @author VerpHen * @date 2013年9月10日 上午9:48:32 */ package org.verphen.simpleFactory; /*测试简单工厂方法类*/ public class SimpleFactoryTest { public static void main(String[] args) { // ICar car = SimpleFactory.driveCar("Benz"); // ICar car = SimpleFactory.driveCar("Ferrari"); ICar car = SimpleFactory.driveCar("Jaguar"); car.run(); car.stop(); } } |