而且整个代码看起来很长,对于后续迭代和扩展会造成很大的麻烦,因此在考虑设计模式的单一职责原则后,我们可以利用工厂模式对奖品处理返回阶段进行抽取,让每个业务逻辑在自己所属的类中完成。 首先,我们从业务逻辑中发现无论是那种奖品,都需要发送,因此可以提炼出统一的入参接口和发送方法:ICommodity、sendCommodity(String ...
Contextc=Context(type); ...=c.GetResult(); 总结:简单工厂模式,客户端需要两个类,Strategy和StrategyFactory,而策略与工厂结合只需要一个类,Context类。降低了耦合性。 策略模式解析 策略模式是一种定义一系列算法的方法,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了...
抽象工厂(Factory):声明了工厂方法,返回一个抽象产品类型的对象。 具体工厂(ConcreteFactory):实现了抽象工厂接口,返回具体产品实例。 在业务开发中,工厂模式常用于创建具有共同接口的对象,但具体实现可能因业务场景而异。例如,在支付系统中,可以定义一个支付工厂,根据支付类型(如微信支付、支付宝支付)返回相应的支付对象。
在大多数情况下,我们会选用第三种——静态工厂方法模式(将工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可)。 b)扩展:当需要生成的产品不多且不会增加,一个具体工厂类就可以完成任务时,可删除抽象工厂类。这时工厂方法模式将退化到简单工厂模式 3.2.3、抽象工厂模式 定义:提供一个创建一系列相关或相...
Java 设计模式--策略模式,枚举+工厂方法实现 项目中的一个页面跳转功能存在10个以上的if else判断,想要做一下整改 一、什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重If判断问题。
设计模式之策略模式+工厂模式 1、前序 问题背景是最近在看代码时,看到好多if else,然后就在看能否对应做出些优化,所以就有了这篇文章。 思路来源:https://www.bilibili.com/video/BV1b5411a7oa?spm_id_from=333.880.my_history.page.click&vd_source=b120cbf8ba336884303a76b168648a14...
关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。 1. 策略模式 关于策略模式的使用方式,在Spring中其实比较简单,从本质上讲,策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。
如此,我们的策略模式就和静态工厂方法模式整合好了,我们写一个单元测试试一下: import com.example.aopdemo.AopDemoApplication; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; ...
工厂方法模式具体实现就是:接口定义一个枚举,每个服务实现都重新实现枚举,设置唯一标志枚举,再交给spring容器管理。看代码咯:interface ICompanyCommonService{ Resp hander(req); CompanyEnum getCompanyEnum(); } CompanyAServiceImpl extends AbstractCompanyCommonService{ Resp hander(req){ return handlerTemp...