简单工厂模式:也可以叫做静态工厂方法,属于类创建型模式,根据不同的参数,返回不同的类实现。
主要包含了三个角色:
A.抽象产品角色 一般用接口 或是 抽象类实现
B.具体的产品角色,具体的类的实现
C 工厂角色,实例的产生,根据不同参数,返回不同的类的实现。
结合枚举类的实现代码如下:
1、抽象的产品角色:
package factory.simple; /** * 抽象产品角色 交通工具接口 * * @author lilin * */ public interface Car { /** * 上班函数 */ void gotowork(); }
2、具体的产品角色 总共实现了两个具体产品类,代码如下:
package factory.simple; /** * 具体产品角色,自行车 * * @author lilin * */ public class Bike implements Car { @Override public void gotowork() { System.out.println("骑自行车去上班!"); } }
package factory.simple; /** * @author lilin * */ public class Bus implements Car { @Override public void gotowork() { System.out.println("坐公交车去上班!"); } }
3.工厂角色,实际实例的产生者:结合了枚举类型的实现,方便返回不同的实例判断
/** * */ package factory.simple; /** * @author lilin * */ public class SimpleFactory { public enum CarTypr { BIKE, BUS; } /** * 获取car的实例返回 * * @param car * @return */ public static Car getCar(CarTypr car) { Car simpleCar = null; switch (car) { case BIKE: simpleCar = new Bike(); break; case BUS: simpleCar = new Bus(); break; default: simpleCar = new Bike(); } return simpleCar; } }
最后,采用testNG,实现简单的测试:
/** * */ package factory.simple; import org.testng.annotations.Test; import factory.simple.SimpleFactory.CarTypr; /** * @author lilin * */ public class TestSimpleFactory { @Test public void test1() { Car car = SimpleFactory.getCar(CarTypr.BIKE); System.out.println("上班方式:"); car.gotowork(); Car car2 = SimpleFactory.getCar(CarTypr.BUS); System.out.println("上班方式:"); car2.gotowork(); } }
很容易就能得到测试结果,得知,一个简单工厂模式的实现,到此over。测试结果如下:
上班方式:
骑自行车去上班!
上班方式:
坐公交车去上班!
PASSED: test1