菜单
首页 > > 京东电商>正文

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

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

在京东开店卖手机需要多少钱_开店京东买手机可靠吗_在京东买了手机怎么开店 51秒懂电商资讯网

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

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

模式定义

51秒懂电商资讯网

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秒懂

定义用于创建对象的接口,但让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类。 www.51md.cn

模式结构

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

模式实现

产品

手机接口定义

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();
    }
}

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

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

回顾

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

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

推荐阅读:

淘宝标题怎么优化才有排名

超级推荐展现低是怎么回事(有哪些技巧优化)

京东子账号怎么设置权限(了解京东子账号是什么)

京东宝贝陪伴计划怎么删除(分享京东陪伴计划有必要加入吗)

京东注册店铺命名在哪里修改(读懂京东后台资质怎么更新)

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

工厂方法模式
  

相关阅读