步骤一:
定义IAbstractFactory 接口(超级工厂)
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName IAbstractFactory
* @description:
* @author: hc
* @create: 2020-03-19 21:05
* @Version 1.0
**/
public interface IAbstractFactory {
Car getCar();
IBreakFast getBreakFast();
}
步骤二:
定义汽车接口(子工厂)Car .java和早餐接口IBreakFast.java
package AbstractFactory;
public interface Car {
/**
* 上班函数
*/
void gotowork();
}
package AbstractFactory;
public interface IBreakFast {
/**
* 吃早餐
*/
void eat();
}
步骤三:
定义汽车的实现类Bus.java和Bike.java
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName Bike
* @description:
* @author: hc
* @create: 2020-03-19 21:02
* @Version 1.0
**/
public class Bike implements Car {
@Override
public void gotowork() {
System.out.println("骑自行车去上班!");
}
}
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName Bus
* @description:
* @author: hc
* @create: 2020-03-19 21:03
* @Version 1.0
**/
public class Bus implements Car {
@Override
public void gotowork() {
System.out.println("坐公交车去上班!");
}
}
步骤四:
定义早餐的实现类Milk.java和Orange. java
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName Milk
* @description:
* @author: hc
* @create: 2020-03-19 21:04
* @Version 1.0
**/
public class Milk implements IBreakFast {
@Override
public void eat() {
System.out.println("喝牛奶!");
}
}
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName Orange
* @description:
* @author: hc
* @create: 2020-03-19 21:04
* @Version 1.0
**/
public class Orange implements IBreakFast {
@Override
public void eat() {
System.out.println("吃橘子!");
}
}
步骤五:
定义人
HighPersonFactory.class
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName HighPersonFactory
* @description:
* @author: hc
* @create: 2020-03-19 21:06
* @Version 1.0
**/
public class HighPersonFactory implements IAbstractFactory {
@Override
public Car getCar() {
return new Bus();
}
@Override
public IBreakFast getBreakFast() {
return new Milk();
}
}
LowPersonFactory.java
package AbstractFactory;
/**
* @program: MyFactory
* @ClassName LowPersonFactory
* @description:
* @author: hc
* @create: 2020-03-19 21:05
* @Version 1.0
**/
public class LowPersonFactory implements IAbstractFactory {
@Override
public Car getCar() {
return new Bike();
}
@Override
public IBreakFast getBreakFast() {
return new Orange();
}
}
步骤五:
定义实现类AbstractFactoryTest.java
package AbstractFactory;
import org.junit.Test;
/**
* @program: MyFactory
* @ClassName AbstractFactoryTest
* @description:
* @author: hc
* @create: 2020-03-19 21:34
* @Version 1.0
**/
public class AbstractFactoryTest {
@Test
public void test() {
IAbstractFactory factory = new LowPersonFactory();
Car car = factory.getCar();
IBreakFast breakFast = factory.getBreakFast();
System.out.println("吃的早饭是:");
breakFast.eat();
System.out.println("上班交通工具是:");
car.gotowork();
IAbstractFactory factory2 = new HighPersonFactory();
car = factory2.getCar();
breakFast = factory2.getBreakFast();
System.out.println("吃的早饭是:");
breakFast.eat();
System.out.println("上班交通工具是:");
car.gotowork();
}
}
运行结果:
吃的早饭是:
吃橘子!
上班交通工具是:
骑自行车去上班!
吃的早饭是:
喝牛奶!
上班交通工具是:
坐公交车去上班!
Process finished with exit code 0