Java设计模式学习-抽象工厂模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40646143/article/details/85036851

抽象工厂模式

  • 用来生产不同产品族的全部产品 。 (对于增加新的产品,无能为力,支持增加产品族)
  • 抽象工厂模式是工厂方法模式的升级版本 , 在有多个业务品种 , 业务分类时 , 通过抽象工厂模式产生需要的对象是一种非常好的解决方式 。

                        

1),创建发动机类接口,并创建它的俩个实现类如下

/**发动机接口
 * @author 晓电脑
 */
public interface Engline {
    void start();
}

/**
 * 低端汽车发动机
 */
class LowEngline implements Engline{
    @Override
    public void start() {
        System.out.println("启动慢");
    }
}

/**
 * 高端汽车发动机
 */
class HigEndEngline implements Engline {

    @Override
    public void start() {
        System.out.println("启动快");
    }
}

2),创建轮胎类接口 ,并创建它的俩个实现类如下

/**轮胎接口
 * @author 晓电脑
 */
public interface Tyre {
    void abrasion();
}

/**
 * 低配轮胎
 */
class lowTyre implements Tyre{

    @Override
    public void abrasion() {
        System.out.println("轮胎磨损快");
    }
}

/**
 * 高配轮胎
 */
class HighEndTyre implements Tyre{

    @Override
    public void abrasion() {
        System.out.println("轮胎无磨损");
    }
}

3),创建座椅接口,并创建它的俩个实现类如下

/**座椅接口
 * @author 晓电脑
 */
public interface Chair {
    void message();
}

/**
 * 低端座椅
 */
class LowChair implements Chair{
    @Override
    public void message() {
        System.out.println("座椅没有按摩功能");
    }
}

/**
 * 高端座椅
 */
class HigEndChair implements Chair{
    @Override
    public void message() {
        System.out.println("座椅自带按摩功能");
    }
}

4),创建车类的工厂类接口 ,并创建俩个它的实现类如下

/**创建车工厂类 接口
 * @author 晓电脑
 */
public interface CarFactory {
    //创建座椅
    Chair createChair();
    //创建轮胎
    Tyre createTyre();
    //创建发动机
    Engline createEnline();

}

/**
 * 低端汽车
 */
class LowCarFactory implements CarFactory{

    @Override
    public Chair createChair() {
        return new LowChair();
    }

    @Override
    public Tyre createTyre() {
        return new lowTyre();
    }

    @Override
    public Engline createEnline() {
        return new LowEngline();
    }
}

/**
 * 高端汽车
 */
class HigEndCarFactory implements CarFactory{

    @Override
    public Chair createChair() {
        return new HigEndChair();
    }

    @Override
    public Tyre createTyre() {
        return new HighEndTyre();
    }

    @Override
    public Engline createEnline() {
        return new HigEndEngline();
    }
}

5),创建 Client 客户端进行测试

/**测试客户端
 * @author 晓电脑
 */
public class Client {
    public static void main (String[] args) {
        //创建高端汽车工厂类
        HigEndCarFactory factory = new HigEndCarFactory();
        //座椅
        Chair chair = factory.createChair();
        chair.message();
        //发动机
        Engline enline = factory.createEnline();
        enline.start();
        //轮胎
        Tyre tyre = factory.createTyre();
        tyre.abrasion();
    }
}

我们来绘制这个uml类图, 如下

工厂模式要点总结:

  • 简单工厂模式(静态工厂模式)  -->  虽然某种程度不符合设计原则 ,单实际使用最多 。
  • 工厂方法模式   --> 不修改已有类的前提下 , 通过增加新的工厂类实现扩展 。
  • 抽象工厂模式   --> 不可以增加产品 , 可以增加产品族 !

猜你喜欢

转载自blog.csdn.net/qq_40646143/article/details/85036851