简单工厂模式:也可以叫做静态工厂方法,属于类创建型模式,根据不同的参数,返回不同的类实现。
主要包含了三个角色:
A.抽象产品角色 一般用接口 或是 抽象类实现
B.具体的产品角色,具体的类的实现
C 工厂角色,实例的产生,根据不同参数,返回不同的类的实现。
结合枚举类的实现代码如下:
1、抽象的产品角色:
packagefactory.simple;/*** 抽象产品角色 交通工具接口
*
*@authorlilin
**/
public interfaceCar {/*** 上班函数*/
voidgotowork();
}
2、具体的产品角色 总共实现了两个具体产品类,代码如下:
packagefactory.simple;/*** 具体产品角色,自行车
*
*@authorlilin
**/
public class Bike implementsCar {
@Overridepublic voidgotowork() {
System.out.println("骑自行车去上班!");
}
}
packagefactory.simple;/***@authorlilin
**/
public class Bus implementsCar {
@Overridepublic voidgotowork() {
System.out.println("坐公交车去上班!");
}
}
3.工厂角色,实际实例的产生者:结合了枚举类型的实现,方便返回不同的实例判断
/****/
packagefactory.simple;/***@authorlilin
**/
public classSimpleFactory {public enumCarTypr {
BIKE, BUS;
}/*** 获取car的实例返回
*
*@paramcar
*@return
*/
public staticCar getCar(CarTypr car) {
Car simpleCar= null;switch(car) {caseBIKE:
simpleCar= newBike();break;caseBUS:
simpleCar= newBus();break;default:
simpleCar= newBike();
}returnsimpleCar;
}
}
最后,采用testNG,实现简单的测试:
/****/
packagefactory.simple;importorg.testng.annotations.Test;importfactory.simple.SimpleFactory.CarTypr;/***@authorlilin
**/
public classTestSimpleFactory {
@Testpublic voidtest1() {
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
原文:http://www.cnblogs.com/lilin0719/p/5304482.html