1.抽象产品接口:定义产品的接口,公共的暴露方法。便于实际的产品类实现。
2.具体的产品类:包含实际产品的类的逻辑处理:
3.抽象工厂接口:定义产生系列对象的接口
4.具体的工厂实现:实现抽象的接口工厂,返回具体的产品类的实现。
下面是具体的代码示例:
1.抽象的产品接口,定义了Car
package factory.simple;
/**
* 抽象产品角色 交通工具接口
*
* @author lilin
*
*/
public interface Car {
/**
* 上班函数
*/
void gotowork();
}
2.定义具体的产品类的实现:
public class Bike implements Car {
@Override
public void gotowork() {
System.out.println("骑自行车去上班!");
}
}
public class Bus implements Car {
@Override
public void gotowork() {
System.out.println("坐公交车去上班!");
}
}
3.定义好抽象的工厂接口,一系列的获取实例的接口方法:
public interface IAbstractFactory {
Car getCar();
}
4.定义具体的工厂生产类,具体的产品实例返回。
public class LowPersonFactory implements IAbstractFactory {
@Override
public Car getCar() {
return new Bike();
}
}
public class HighPersonFactory implements IAbstractFactory {
@Override
public Car getCar() {
return new Bus();
}
}
5.test
public class AbstractFactoryTest {
@Test
public void test() {
IAbstractFactory factory = new LowPersonFactory();
Car car = factory.getCar();
System.out.println("上班交通工具是:");
car.gotowork();
IAbstractFactory factory2 = new HighPersonFactory();
car = factory2.getCar();
System.out.println("上班交通工具是:");
car.gotowork();
}
}