外观模式、工厂模式、策略模式与迭代器模式简单对比

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、外观模式(Façade设计模式)

属于结构式模式
作用:简化客户端与内部子系统之间的接口,让用户可以更简单的使用程序功能
适用:子系统相对独立时为外界提供访问模块
实现:在客户端和复杂系统之间再添加一层在这里插入图片描述
其中Demo调用时

ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();

二、工厂模式(Factory设计模式)

属于创建式模式
作用: 解决接口的选择问题
适用:多个产品在同一工厂加工时
实现:创建的过程在子类中执行,用户输入对于字符串即可
在这里插入图片描述
其中Factory中

      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }

Demo的调用为

      ShapeFactory shapeFactory = new ShapeFactory();
 
      //获取 Circle 的对象,并调用它的 draw 方法
      Shape shape1 = shapeFactory.getShape("CIRCLE");
 
      //调用 Circle 的 draw 方法
      shape1.draw();

工厂模式和外观模式的对比:
这两个模式的结构都非常的相似,但是工厂模式的作用主要是体现在创建的过程上,可以使创建子类的操作简化。而外观模式主要体现在简化客户使用功能的过程。

三、策略模式(Strategy设计模式)

属于行为型模式
作用:可方便调用多种相似算法,免除if…else的麻烦
适用:在同一场景需要用到不同策略(功能)时
实现:实现同一个接口,将这些算法封装成一个一个的类,任意地替换
注:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题
在这里插入图片描述
其中Demo的调用时

      Context context = new Context();    
      context.SetStrategy(new OperationAdd());  

四、迭代器模式(Iterator设计模式)

属于行为型模式。
该设计模式其实就是给类中内容专门写一个方法,用来有序输出类中元素。

	public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
      @Override
      public Object next() {
         if(this.hasNext()){
            return names[index++];
         }
         return null;
      }   
简单工厂模式(Java、Python)、工厂方法模式(Java、Python) 一、试画出简单工厂模式模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 图1 简单工厂模式模式结构图 由图1可知,简单工厂模式包含以下3个角色: Factory(工厂角色):工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法factoryMethod(),它的返回类型为抽象产品类型Product; Product(抽象产品角色):它是工厂类创建的所有对象的父类,封装... 阅读详情

相关推荐

(Golang)外观模式 VS 工厂模式

就是一种外观模式,它将操作系统内部的许多复杂的操作封装成了简单的API接口,供应用程序使用。在上面的代码中,我们根据文件扩展名来选择不同的音频播放器,并调用它的方法来播放音频文件。外观模式的主要应用场景是在设计系统时,需要对复杂的子系统进行封装,提供一个简单的接口给客户端使用。外观模式是一种非常有用的设计模式,它可以帮助我们简化复杂的系统和模块,提高代码的可维护性和可读性。这样,我们就可以使用外观模式来简化音频播放器的使用过程,提高代码的可维护性和可读性。工厂模式的区别在于,工厂模式主要。

canduecho的专栏 1247

【设计模式系列】6.外观模式策略模式

目录 一、外观模式 1、外观模式特点 2、应用举例 二、策略模式 1、策略模式特点 2、应用举例 3、Java项目中使用策略模式场景 一、外观模式 1、外观模式特点 为系统对外提供一个统一的入口,可以对客户端隐藏子系统内部实现的细节,也降低了客户端子系统类之间的耦合度; 例如Spring MVC中的 DispaterServlet,所有的Controller都是通过DispaterServlet统一暴露。 2、应用举例 场景一: 比如,一个项目团队有需求人员,开发人员,测试人

小确幸的博客 1009

java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

java 设计模式 Facade外观模式 Simple Factory 简单工厂模式,代码有点罗嗦,不过可移植性很强

策略模式外观模式

1.策略 :定义不同的算法族,并且之间可以互相替换;让算法的变化独立于使用算法的客户,以动态的改变对象的行为。 2. 例子:随机生成宠物,并统计各种宠物生成数量。 a) 抽象类:PetCreator,用于随机生成宠物。 package context; import java.util.ArrayList; import java.util.Collections; import

dai_的专栏 1980

设计模式外观模式策略模式 对比

参考:设计模式工厂模式 准备: 接口 public interface Shape { void draw(); } 实现类: public class Circle implements Shape { @Override public void draw() { System.out.println("Circle::draw()"...

火星男孩的分享空间 1038

软件工程期末复习-软件设计模式体系结构-设计模式

设计模式全集

VengaZ的学习博客 6003

瑞_23种设计模式_工厂模式

本文章为瑞_系列专栏之《23种设计模式》的工厂模式篇,主要介绍了简单工厂模式工厂方法模式、抽象工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,而无需指定要创建的具体类。工厂模式在创建对象时提供了一种封装机制,将实际创建对象的代码使用代码分离。

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 5442

设计模式(二十):行为型之迭代器模式

定义提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

从基础到源码解析的学习记录 1925

浅谈设计模式简单工厂策略模式

带你读懂几种常见的设计模式 第一弹 1、设计模式的六大原则 单一职责原则 每个类的职责尽量单一。这个在实际项目中很难做到。 开闭原则 对扩展开放,对修改关闭。这个原则还是很重要的。 里氏代换原则 只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。这个原则挺不好理解的。 依赖倒转原则 针对接口编程,依赖于抽象而不依赖于具体。 接口隔离原.

学无止境! 485

三大工厂模式简单工厂工厂方法、抽象工厂

设计模式之三大工厂模式介绍,有案例代码说明

hahahahanhanhan的博客 3196

[设计模式Java实现附plantuml源码~行为型]算法的封装切换——策略模式

策略模式用于算法的自由切换和扩展,它是应用较为广泛的设计模式之一。策略模式对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法来解决某一问题,同时可以方便地更换算法或者增加新的算法。只要涉及算法的封装、复用和切换都可以考虑使用策略模式

程序员三木的博客 1337

设计模式Python版 迭代器模式

介绍了GOF设计模式中的迭代器模式,用Python实现迭代器模式示例,以及Python中的迭代器。

分享、交流、合作 1737

瑞_23种设计模式_策略模式

本文章为瑞_系列专栏之《23种设计模式》的策略模式篇。工厂模式结合策略模式可以替换 if-else 语句。策略模式主要目的是避免使用多重条件语句,并将算法的实现从使用算法的客户端代码中分离出来。在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 2980

GOF23设计模式(创建型模式工厂模式

目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式工厂模式、抽象工厂模式、建造者模式、原型模式 结构型横式 适配器模式、桥接模式、装饰模式、组合模式外观模式、享元模式、代理模式 行为型模式 模版方法模式、命令模式迭代器模式、观察者模式、中介者模式

欢迎来到 Baret-H 的博客 1846

设计模式Python版 简单工厂模式

介绍了设计模式中的简单工厂模式,以及用Python实现简单工厂模式的示例。

分享、交流、合作 1320

【Linux系统】日志策略模式

日志等级枚举(LogLevel):定义日志级别工具函数LevelToStr和核心Logger类:管理日志策略和生成日志消息内部类LogMessage:构建和输出单条日志全局对象和宏:简化用户接口。

2402_82670467的博客 1652

设计模式笔记--迭代器模式

设计模式笔记--迭代器模式

bihansheng2010的博客 7440

Java 23 种设计模式概述 简单工厂模式

目录 Java 设计模式概述 设计模式六大原则 简单工厂模式 普通简单工厂 多方法简单工厂 静态方法简单工厂 Java 设计模式概述 1、Java 23 种设计模式总体来说分为三大类: 1)创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式 、原型模式 2)结构型模式共七种:适配器模式、 装饰器模式、代理模式外观模式、桥接模式、组合模式、享元模式。 3)行...

蚩尤后裔-汪茂雄 1346
上一篇: Consturctrue of software知识点笔记第4章
下一篇: Consturctrue of software知识点笔记第5章
akivic
博客等级 码龄8年 12粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值