Caja abstracta de fábrica

Paso uno:

IAbstractFactory define las interfaces (super planta)

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();

}

Paso dos:

Automotriz define interfaces (sub-fábrica) .java coches y un desayuno interfaces de IBreakFast.java

package AbstractFactory;

public interface Car {

    /**
     * 上班函数
     */
    void gotowork();

}
package AbstractFactory;

public interface IBreakFast {
    /**
     * 吃早餐
     */
    void eat();
}

Paso tres:

La definición y la implementación de la clase de coche 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("坐公交车去上班!");
    }

}

Paso cuatro:

Naranja definidos por la clase de implementación Milk.java y desayuno. 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("吃橘子!");
    }

}

Paso cinco:

Definición de un ser humano
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();
    }

}

Paso cinco:

Definir la clase de implementación 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();
    }

}

El resultado:

吃的早饭是:
吃橘子!
上班交通工具是:
骑自行车去上班!
吃的早饭是:
喝牛奶!
上班交通工具是:
坐公交车去上班!

Process finished with exit code 0
Publicado 38 artículos originales · ganado elogios 64 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_40032967/article/details/105100393
Recomendado
Clasificación