设计模式-抽像工厂

文章目录

抽像工厂

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

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

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

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

首先是抽象工厂类

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();
    }
}
相关推荐
workflower7 小时前
情境感知系统
人工智能·机器学习·设计模式·自然语言处理·机器人
咖啡八杯9 小时前
设计模式中的原则
设计模式·接口隔离原则·里氏替换原则·开闭原则·合成复用原则·单一职责原则
安冬的码畜日常11 小时前
【工欲善其事】深入理解 Node.js 带并发上限的异步任务批量执行逻辑
javascript·设计模式·node.js·ai编程·异步编程·并发执行
AI大法师1 天前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
晚安code1 天前
干掉成山的 if-else:工厂造、策略选,一文讲透两个模式的配合
后端·设计模式
workflower1 天前
从幻觉,到现实
人工智能·深度学习·机器学习·设计模式·机器人
电子科技圈1 天前
第二代无线平台历久弥新,赋能物联网创新迭代
人工智能·嵌入式硬件·mcu·物联网·设计模式·硬件架构·iot
choumin2 天前
创建型模式——工厂方法模式
c++·设计模式·工厂方法模式·创建型模式
choumin2 天前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
37.2℃9952 天前
Claude Design哪个公司技术好
python·设计模式