常见设计模式—工厂方法模式

本文介绍了工厂方法模式,这是一种创建型设计模式,用于将对象的创建过程延迟到子类中。通过创建抽象工厂和产品接口,实现了具体的工厂类与产品类的一一对应。文中以手机品牌为例,展示了如何使用工厂方法模式创建小米和华为手机对象,以及在测试类中的应用,阐述了模式的核心思想和应用场景。
摘要由CSDN通过智能技术生成

设计模式—工厂方法模式
1.什么是工厂方法模式
定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。核心工厂类不在负责产品的创建,而是充当一个抽象工厂的角色,仅负责定义具体工厂子类必须实现的接口。

2.角色分析

  • 抽象工厂:提供创建产品的接口;
  • 具体工厂:实现抽象工厂中的接口方法,完成具体产品的创建;
  • 抽象产品:提供产品主要特征接口;
  • 具体产品:实现抽象产品中提供的特征接口,由具体工厂来创建,它和具体工厂之间一一对应。

3.举例实现
以下通过手机品牌的例子加以说明,代码如下:
①抽象工厂

//抽象工厂
public interface IPhoneFactory {

    //获取具体产品方法
    IPhoneFactory getPhone();
}

②抽象产品

//抽象产品
public interface IPhone {
    //获取手机名字
    String getPhoneName();

    //获取手机价格
    double getPhonePrice();
}

③具体产品

//具体产品—小米
public class XiaoMiPhone implements IPhone{

    @Override
    public String getPhoneName() {
        return "小米";
    }

    @Override
    public double getPhonePrice() {
        return 6666.98;
    }
}
// ------------------------------------------
//具体产品—华为手机
public class HuaWeiPhone implements IPhone{
    @Override
    public String getPhoneName() {
        return "华为";
    }

    @Override
    public double getPhonePrice() {
        return 8888.98;
    }
}

④具体工厂

//具体工厂—小米工厂
public class XiaomiFactory implements IPhoneFactory{
    @Override
    public IPhone getPhone() {
        return new XiaoMiPhone();
    }
}
//-----------------------------------
public class HuaWeiFactory implements IPhoneFactory{
    @Override
    public IPhone getPhone() {
        return new HuaWeiPhone();
    }
}

⑤测试类

//测试类
public class Test {
    public static void main(String[] args) {
        IPhoneFactory xiaomiFactory = new XiaomiFactory();
        IPhoneFactory huaWeiFactory = new HuaWeiFactory();
        IPhone xiaoMi = xiaomiFactory.getPhone();
        System.out.println("我将要购买" + xiaoMi.getPhoneName() + "手机,需要支付" + xiaoMi.getPhonePrice() + "元");
    }
}

运行结果:
在这里插入图片描述
④总结
工厂方法模式一个具体工厂对应生产一种具体产品,具体工厂与具体产品为一对一的关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值