步驟一:
定義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