抽象工廠案例

步驟一:

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