嘿!策略模式和工厂模式的区别你知道吗?

简介: 嘿!策略模式和工厂模式的区别你知道吗?
设计模式,是一个程序员修炼的毕竟之路,但是,他是一种思想,思想这东西,这可意会。我之前理解的设计模式更倾注在实现上,而且我经常疑惑工厂和策略不都是得到具体的实现然后调用实现的接口吗?有什么不同。

一 工厂模式

工厂模式是一个创建形模式,他最终是要创建出一个我们要的那个实现,比如一个工厂类,工厂类中的工厂方法只返回了我们要的对象而已

二 策略模式

策略模式,他是一个行为型的设计模式,怎么理解这个行为型呢?来上代码


public class Context<T> {

    private ICouponDiscount<T> couponDiscount;

    public Context(ICouponDiscount<T> couponDiscount) {
        this.couponDiscount = couponDiscount;
    }

    public BigDecimal discountAmount(T couponInfo, BigDecimal skuPrice) {
        return couponDiscount.discountAmount(couponInfo, skuPrice);
    }}

这个类就是策略模式的策略类,我们传入的是我们的实例,而返回的是具体实例的具体方法,注意,这时,我们的焦点已经不是创建一个实例了,我们要的是实例对应的实现。

其中这两个设计模式最重要的一个是工厂类,一个是策略类,工厂模式说,不关心具体的实现,将创建对象和这个对象干什么进行了一个分离,这就要需要依赖工厂类,而策略模式,根据传入的对象,去确定对象执行哪一种行为,这就需要策略类。那策略模式有啥有点呢,在网上查,大多数都是,他能够干掉大多数的if else,那怎么干掉,这个也是困惑了我很久,上代码

Context<Double> context = new Context<Double>(new ZJCouponDiscount());
BigDecimal discountAmount = context.discountAmount(10D, new BigDecimal(100));
logger.info("测试结果:直减优惠后金额 {}", discountAmount);

这么来看 if else是没有了,但是,那时直接传了实例呀,至于用什么实例不还要要if判断出来吗?终于在今天我悟到了,不用if 判断,直接用map将类型和实例映射起来,原来是省略了这部分。

相关文章
|
Java Maven
Maven - Error:java: Annotation processing is not supported for module cycles. Please ensure that all
Maven - Error:java: Annotation processing is not supported for module cycles. Please ensure that all
2146 0
Maven - Error:java: Annotation processing is not supported for module cycles. Please ensure that all
|
设计模式 算法 开发者
深入理解工厂模式与策略模式:设计模式的灵活应用
深入理解工厂模式与策略模式:设计模式的灵活应用
|
Java Maven
【亮剑】Java项目开发中常遇到Jar 包依赖冲突问题,主要由不同版本库、循环依赖、传递依赖和依赖范围不当引起
【4月更文挑战第30天】Java项目开发中常遇到依赖冲突问题,主要由不同版本库、循环依赖、传递依赖和依赖范围不当引起。解决冲突需分析依赖树、定位冲突源、调整类加载顺序等。方法包括排除冲突依赖、统一管理版本、限定依赖范围、合并冲突类、升级降级库版本及拆分模块。关注依赖关系,及时解决冲突,保障项目稳定运行。
1301 0
|
算法 安全 Java
Java 代码优化方法和展示例子
Java 代码优化方法和展示例子
146 0
|
Java API
开发利器Hutool之MapUtil的使用
开发利器Hutool之MapUtil的使用
2434 0
开发利器Hutool之MapUtil的使用
|
3天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
354 91
|
4天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
376 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%