概述
1. Java设计模式之模板模式
2. Java设计模式之策略模式
3. Java设计模式之工厂模式
4. Java设计模式之装饰者模式
5.Java设计模式之单例模式
Java 设计模式源代码,欢迎star
https://github.com/Dylan-haiji/design-pattern
概念
工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。
优缺点
- 主要优点有
a) 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。
b) 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则。 - 缺点是
每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。
代码演示
场景设定
工厂模式的场景设定 https://github.com/Dylan-haiji/design-pattern/tree/master/factory-mode
结构图
3.1 定义工厂 接口
public interface PhoneFactory {
/**
* @Description 创建手机工厂
* @UserModule: design-pattern
* @author Dylan
* @date 2020/2/3 0003
* @param [phoneVO]
* @return PhoneService
*/
PhoneService craetePhone(PhoneVO phoneVO);
}
3.2 通用工厂实现
public class CurrencyFactory implements PhoneFactory {
/**
* @Description 通用
* @UserModule: design-pattern
* @author Dylan
* @date 2020/2/3 0003
* @param [phoneVO]
* @return PhoneService
*/
@Override
public PhoneService craetePhone(PhoneVO phoneVO) {
return crateFactory(phoneVO.getType());
}
private PhoneService crateFactory(String type){
return Constant.HUAWEI.equalsIgnoreCase(type)? new HWServiceImpl(): new IPhoneServiceImpl();
}
}
3.3 定义适配接口
/**
* @author Dylan Yang
* @Description: 手机工厂适配接口
* @ProjectName design-pattern
* @date 2020-02-03 12:09
*/
public interface PhoneService {
/**
* @Description 手机适配接口
* @UserModule: design-pattern
* @author Dylan
* @date 2020/2/3 0003
* @param [phoneVO]
* @return com.javayh.dto.PhoneDTO
*/
PhoneDTO getPhone(PhoneVO phoneVO);
}
3.4 具体的业务
@Service
public class IPhoneServiceImpl implements PhoneService {
/**
* @Description 苹果手机套餐
* @UserModule: design-pattern
* @author Dylan
* @date 2020/2/3 0003
* @param [phoneVO]
* @return com.javayh.dto.PhoneDTO
*/
@Override
public PhoneDTO getPhone(PhoneVO phoneVO) {
return PhoneDTO.builder().type(phoneVO.getType())
.setMeal(phoneVO.getSetMeal())
.price(Constant.SET_MEAL_I.equalsIgnoreCase(phoneVO.getSetMeal())? "2020": "3030")
.msg(Constant.MSG).build();
}
}
3.5 应用
/**
* @Description 获取手机
* @UserModule: design-pattern
* @author Dylan
* @date 2020/2/3 0003
* @param [vo]
* @return com.javayh.result.DataResult
*/
@PostMapping(value = "/getCurrency")
public DataResult getCurrency(@RequestBody PhoneVO vo){
PhoneFactory phoneFactory = new CurrencyFactory();
PhoneService phoneService = phoneFactory.craetePhone(vo);
return DataResult.success(phoneService.getPhone(vo));
}
3.6 验证
通用接口验证地址 :http://localhost:8091/factory/getCurrency
关注 Java有货领取更多资料
联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
- Java 设计模式学习代码 https://github.com/Dylan-haiji/design-pattern
- SpringCloud学习代码: https://github.com/Dylan-haiji/javayh-cloud
- AlibabaCloud学习代码:https://github.com/Dylan-haiji/javayh-cloud-nacos
- SpringBoot+Mybatis 多数据源切换:https://github.com/Dylan-haiji/javayh-boot-data-soure
- Redis、Mongo、Rabbitmq、Kafka学习代码: https://github.com/Dylan-haiji/javayh-middleware
- SpringBoot+SpringSecurity实现自定义登录学习代码:https://github.com/Dylan-haiji/javayh-distribution
最后
以上就是勤劳胡萝卜为你收集整理的Java设计模式之工厂模式的全部内容,希望文章能够帮你解决Java设计模式之工厂模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复