资讯-淘券派

【设计模式】通过在京东上购买苹果全家桶了解抽象工厂

背景

买1个手机(Product A),可以在苹果京东自营官方旗舰店(ConcreteCreator A)上面买(Product A1),

也可以在三星京东自营官方旗舰店(ConcreteCreatorB)上面买(Product A2)。

买1个电脑(Product B)也是如此。

对于一个果粉,手里设备可能是iPhone Pro Max、iPad Pro、MacBook Pro、AirPods Pro等。当有一天他转身成为三星粉时,手里的设备可能变成Galaxy Book、Galaxy Tab、Galaxy Watch等。

对应的需要2个抽象工厂,来提供2套对应的全家桶。

模式定义

Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

提供一个接口,用于创建相关或依赖的对象族,而无需指定它们的具体类。

模式结构

模式实现

1.产品

1.1.手机

package com.example.designpattern.abstractfactory.product.phone;

/**
 * 手机
 *
 * @author hongcunlin
 */
public interface Phone {
    /**
     * 拨号
     */
    void call();
}

苹果手机

package com.example.designpattern.abstractfactory.product.phone.impl;

import com.example.designpattern.abstractfactory.product.phone.Phone;

/**
 * 苹果手机
 *
 * @author hongcunlin
 */
public class IPhone14ProMax implements Phone {
    @Override
    public void call() {
        System.out.println("苹果手机iPhone14ProMax拨号中...");
    }
}

三星手机

package com.example.designpattern.abstractfactory.product.phone.impl;

import com.example.designpattern.abstractfactory.product.phone.Phone;

/**
 * 三星手机
 *
 * @author hongcunlin
 */
public class GalaxyS23Ultra implements Phone {
    @Override
    public void call() {
        System.out.println("三星手机GalaxyS23Ultra拨号中...");
    }
}