/**
* 工厂模式的测试
* <p>
* 工厂方法模式
* 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。 * 来看下它的组成:
* 1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
* 2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
* 3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
* 4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
*/
public class MyFactoryClass {
public static void main(String[] age) {
//获取产品plane
VehicleFactory vehicleFactory = new DefauleFactory();
vehicleFactory.createPlan().rum();
//获取产品Broom
VehicleFactory vehicleFactory2 = new DefauleFactory();
Broom b = vehicleFactory2.createBroom();
b.rum();
b.get();
/**
* 输出结果为:
*plane
broom
123456789
*/
}
//===========================================================================产品
//抽象产品角色(产品的父类)
public interface Moveable {
void rum();
}
//具体产品角-1
public static class Plane implements Moveable {
@Override
public void rum() {
System.out.println("plane");
}
}
//具体产品角色-2
public static class Broom implements Moveable {
@Override
public void rum() {
System.out.println("broom");
}
public void get() {
System.out.println("123456789");
}
}
//===========================================================================工厂类
//抽象工厂
public static abstract class VehicleFactory {
abstract Plane createPlan();
abstract Broom createBroom();
}
//具体工厂
public static class DefauleFactory extends VehicleFactory {
@Override
Plane createPlan() {
return new Plane();
}
@Override
Broom createBroom() {
return new Broom();
}
}
}