2、工厂模式(Factory Pattern)

工厂模式的本质就是用工厂方法代替new操作创建一种实例化对象的方式,以提供一种方便地创建有同种类型接口的产品的复杂对象。

以创建手机为例,假设手机的品牌有华为和苹果两种类型,我们要实现的是根据不同的传入参数实例化不同的手机,则其具体的UML设计图如下。1、定义接口:

package cn.jaa.factory_pattern;

/**
 * @Author: Jaa
 * @Desc:定义一个接口,返回手机的品牌
 * @Date: 2023/11/27 21:32
 */
public interface Phone {
    String brand();
}

2、定义实现类:

package cn.jaa.factory_pattern;

/**
 * @Author: Jaa
 * @Date: 2023/11/27 21:33
 */
public class IPhone implements Phone {

    @Override
    public String brand() {
        return "This is a Apple phone.";
    }
}

package cn.jaa.factory_pattern;

/**
 * @Author: Jaa
 * @Date: 2023/11/27 21:34
 */
public class Huawei implements Phone{
    @Override
    public String brand() {
        return "This is a Huawei phone.";
    }
}

3、定义工厂类:

package cn.jaa.factory_pattern;

/**
 * @Author: Jaa
 * @Date: 2023/11/27 21:37
 */
public class Factory {

    public Phone createPhone(String phoneName) {
        if ("Apple".equals(phoneName)) {
            return new IPhone();
        } else if ("Huawei".equals(phoneName)) {
            return new Huawei();
        } else {
            return null;
        }
    }
}

4、使用工厂模式测试:

package cn.jaa.factory_pattern;

import java.util.logging.Logger;


/**
 * @Author: Jaa
 * @Desc:工厂模式
 *
 * @Date: 2023/11/27 21:39
 */
public class FactoryDemo {

    private static final Logger log = Logger.getLogger(String.valueOf(FactoryDemo.class));

    public static void main(String[] args) {
        Factory factory = new Factory();
        Phone apple = factory.createPhone("Apple");
        Phone huawei = factory.createPhone("Huawei");
        log.info(apple.brand());
        log.info(huawei.brand());
    }
}

打印结果:

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值