设计模式-抽像工厂

文章目录

抽像工厂

何为抽象工厂模式
抽象工厂模式 是对简单工厂模式的一个变种,它允许通过一个统一的接口来创建不同的产品实例,而无需指定具体的子类。在这个模式中,我们只关心产品的抽象接口,而将具体的产品实现留给子类去实现。这样,我们可以通过创建不同的工厂对象来创建不同的产品实例,而无需关心它们实际实现的是哪个具体产品。

抽象工厂模式具体包含以及几个角色:

  • 抽象工厂:声明了一组用于创建一族产品的方法,每一个方法对应一个产品
  • 具体工厂:实现了在抽象工厂中声明的创建产品的方法,生产一族具体的产品。
  • 抽象产品接口:抽象工厂模式的核心是抽象产品接口,这里面定义了产品的基本结构以及行为
  • 具体的产品类:它定义具体的工厂生产的具体产品对象,实现了抽象产品接口中声明的业务

这里以某个厂家既生产车又生产手机为例

首先是抽象工厂类

java 复制代码
/**
 * 抽象共产类,主要定义了需要创建哪些产品
 */
public abstract class AbstractFactory {
    public abstract AbstractMindPhone createMindPhone();
    public abstract AbstractMindCar createMindCar();
}

具体工厂类

java 复制代码
/**
 * 具体的工厂类,继承了抽象共产并且重写了里面的方法,具体实现了xm厂家对car以及phone的对象返回
 */
public class XMFactory extends AbstractFactory {
    @Override
    public AbstractMindPhone createMindPhone() {
        return new XMMindPhone();
    }

    @Override
    public AbstractMindCar createMindCar() {
        return new XMMindCar();
    }
}

抽象产品类

java 复制代码
/**
 * 抽像的car类,定义了car的行为
 */
public abstract class AbstractMindCar {
    public abstract void drive();
    public abstract void automatic();
}
java 复制代码
/**
 * 抽象的phone,定义了phone的行为
 */
public abstract class AbstractMindPhone {
    public abstract void call();
    public abstract void msg();
}

具体产品类

java 复制代码
/**
 * 具体的产品类,对car的行为做了具体的实现
 */
public class XMMindCar extends AbstractMindCar {
    @Override
    public void drive() {
        System.out.println("XM drive");
    }

    @Override
    public void automatic() {
        System.out.println("XM automatic");
    }
}

public class XMMindPhone extends AbstractMindPhone {
    @Override
    public void call() {
        System.out.println("XM call");
    }

    @Override
    public void msg() {
        System.out.println("XM msg");
    }
}

对不同产品的实现以及使用

java 复制代码
public class Main {
    public static void main(String[] args) {
        AbstractFactory xmFactory = new XMFactory();
        AbstractMindCar mxCar = xmFactory.createMindCar();
        mxCar.automatic();
        mxCar.drive();

        AbstractMindPhone xmPhone = xmFactory.createMindPhone();
        xmPhone.call();
        xmPhone.msg();
    }
}
相关推荐
小小寂寞的城10 小时前
JAVA观察者模式demo【设计模式系列】
java·观察者模式·设计模式
花好月圆春祺夏安12 小时前
基于odoo17的设计模式详解---备忘模式
数据库·设计模式
DKPT17 小时前
Java设计模式之行为型模式(责任链模式)介绍与说明
java·笔记·学习·观察者模式·设计模式
使一颗心免于哀伤20 小时前
《设计模式之禅》笔记摘录 - 6.原型模式
笔记·设计模式
ffcf1 天前
设计模式—专栏简介
设计模式
tianchang2 天前
SSR 深度解析:从原理到实践的完整指南
前端·vue.js·设计模式
饕餮争锋2 天前
设计模式笔记_创建型_建造者模式
笔记·设计模式·建造者模式
小小寂寞的城2 天前
JAVA策略模式demo【设计模式系列】
java·设计模式·策略模式
一块plus2 天前
深度详解 Revive 和 Precompile 技术路径
后端·设计模式·架构
智想天开2 天前
31.设计模式的反模式与常见误区
设计模式