抽象工厂案例

步骤一:

定义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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章