首页 > > 京东电商>正文

【设计模式】通过在京东上购买手机了解工厂方法模式

2024-02-22 21:56:51 佚名
浏览
背景买1个苹果手机(Product A),可以到苹果京东自营旗舰店(ConcreteCreator A)中买;买1个三星手机(Product B

背景 m.51md.cn

买1个苹果手机(Product A),可以到苹果京东自营旗舰店(ConcreteCreator A)中买; m.51md.cn

在京东开店卖手机需要多少钱_开店京东买手机可靠吗_在京东买了手机怎么开店 m.51md.cn

买1个三星手机(Product B),可以到三星京东自营旗舰店(ConcreteCreator B)中买;

51秒懂电商创业网

在京东买了手机怎么开店_开店京东买手机可靠吗_在京东开店卖手机需要多少钱

51md.cn

模式定义 51md.cn

Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

51秒懂电商创业网

定义用于创建对象的接口,但让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类。 51秒懂电商资讯网

模式结构

在京东开店卖手机需要多少钱_在京东买了手机怎么开店_开店京东买手机可靠吗

模式实现

产品

手机接口定义

package com.example.designpattern.factorymethod.product;
/**
 * 手机
 *
 * @author hongcunlin
 */
public interface Phone {
    /**
     * 拨号
     */
    void call();
}

苹果手机实现

package com.example.designpattern.factorymethod.product.impl;
import com.example.designpattern.abstractfactory.product.phone.Phone;
/**
 * 苹果手机
 *
 * @author hongcunlin
 */
public class ApplePhone implements Phone {
    @Override
    public void call() {
        System.out.println("正在使用苹果手机拨号中...");
    }
}

三星手机实现

package com.example.designpattern.factorymethod.product.impl;
import com.example.designpattern.abstractfactory.product.phone.Phone;
/**
 * 三星手机
 *
 * @author hongcunlin
 */
public class SamsungPhone implements Phone {
    @Override
    public void call() {
        System.out.println("正在使用三星手机拨号中...");
    }
}

工厂

手机工厂接口定义

package com.example.designpattern.factorymethod.factory;
import com.example.designpattern.abstractfactory.product.phone.Phone;
/**
 * 工厂抽象
 *
 * @author hongcunlin
 */
public interface PhoneFactory {
    /**
     * 创建手机
     *
     * @return 手机
     */
    public abstract Phone createPhone();
}

苹果手机工厂实现

package com.example.designpattern.factorymethod.factory.impl;
import com.example.designpattern.abstractfactory.product.phone.Phone;
import com.example.designpattern.factorymethod.factory.PhoneFactory;
import com.example.designpattern.factorymethod.product.impl.ApplePhone;
/**
 * 苹果工厂
 *
 * @author hongcunlin
 */
public class ApplePhoneFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new ApplePhone();
    }
}

三星手机工厂实现

package com.example.designpattern.factorymethod.factory.impl;
import com.example.designpattern.abstractfactory.product.phone.Phone;
import com.example.designpattern.factorymethod.factory.PhoneFactory;
import com.example.designpattern.factorymethod.product.impl.SamsungPhone;
/**
 * 三星工厂
 *
 * @author hongcunlin
 */
public class SamsungPhoneFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new SamsungPhone();
    }
}

测试

package com.example.designpattern.factorymethod;
import com.example.designpattern.abstractfactory.product.phone.Phone;
import com.example.designpattern.factorymethod.factory.PhoneFactory;
import com.example.designpattern.factorymethod.factory.impl.ApplePhoneFactory;
import com.example.designpattern.factorymethod.factory.impl.SamsungPhoneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
/**
 * @author hongcunlin
 */
@SpringBootTest
public class DesignPatternTest {
    @Test
    public void test() {
        PhoneFactory phoneFactory = new ApplePhoneFactory();
        buyAndUseProduct(phoneFactory);
        phoneFactory = new SamsungPhoneFactory();
        buyAndUseProduct(phoneFactory);
    }
    /**
     * 购买和使用产品
     *
     * @param phoneFactory 工厂
     */
    private void buyAndUseProduct(PhoneFactory phoneFactory) {
        Phone phone = phoneFactory.createPhone();
        phone.call();
    }
}

可以看到从手机工厂中获取的手机产品,都是可以正常使用的

在京东开店卖手机需要多少钱_开店京东买手机可靠吗_在京东买了手机怎么开店

回顾

本问题通过在电商购买产品的流程,抽象了一个工厂方法的设计模式理念,相当好理解,就像手机取之不尽,而各大旗舰店就类似一个个的工厂。

与之类似的还有抽象工厂,有空再闲聊。

推荐阅读:

京东兑换码在哪里兑换(解读手机京东兑换码在哪里领取)

京东的店铺动态在哪里(分析京东的店铺动态有什么作用)

淘宝推广费一般多少(推广费收费标准)

入驻京东过程中出现异常如何处理

如何做好京东搜索(解析怎么提升搜索流量)

51秒懂网版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3547800866@qq.com 举报,一经查实,本站将立刻删除。

本文地址:https://www.51md.cn/article/94843.html