首页 > 其他分享 >设计模式相关 小题

设计模式相关 小题

时间:2023-03-25 13:23:54浏览次数:46  
标签:请求 对象 观察者 模式 处理 相关 设计模式

10.当对一个对象的改变需要同时改变其它对象,但它不知道其它对象是谁,并且也不知道具体有多少对象有待改变时,我们应该使用()
A、责任链(Chain of Responsibility)
B、观察者(Observer)
C、模板方法(Template Method)
D、代理(Proxy)

答案:B、观察者(Observer)。
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个对象同时监听某一个主题对象,当主题对象状态发生改变时,它的所有依赖者都会收到通知并自动更新。在本题中,需要同时改变其它对象,但不知道具体有多少对象需要改变,这正是观察者模式所擅长的场景。当被观察对象发生变化时,观察者对象会自动接收到通知并作出相应的反应,这样能够保证系统的松耦合性,同时也更加容易扩展。责任链模式、模板方法模式、代理模式虽然也有一定的灵活性和扩展性,但并不太适合本题中描述的问题。

以下是另外三个选项的简要介绍:
A、责任链(Chain of Responsibility):责任链模式是一种行为设计模式,它使得多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系。在该模式中,所有的接收者都拥有一个处理请求的机会,但具体由哪个接收者来处理请求则是在运行时动态确定的。使用责任链模式可以有效地降低系统的耦合度,同时处理请求的对象也可以灵活地组成链式结构。

C、模板方法(Template Method):模板方法模式是一种行为设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现。在该模式中,模板方法定义了操作中基本的执行流程和一些具体的方法实现,而具体的实现则由子类来完成。模板方法模式的主要优点是降低了代码重复率,同时也提高了系统的可维护性和可扩展性。

D、代理(Proxy):代理模式是一种结构性设计模式,它为一个对象提供一个代理,从而控制对原始对象的访问。在该模式中,代理对象与被代理对象实现了相同的接口,代理对象可以直接使用原始对象的方法和属性,同时还可以在原始对象方法的基础上添加或修改一些额外的行为。使用代理模式可以实现远程代理、虚拟代理、缓存代理等多种形式,从而更好地控制系统的访问和使用。

责任链和观察者模式有什么区别

责任链模式和观察者模式虽然都是行为设计模式,但是它们的目的和应用场景有很大的区别。

 责任链模式用于处理请求的解耦合,每个处理者都可以对请求进行处理,但是该请求是按照链式结构依次传递下去的。当客户端提交一个请求时,请求会先由第一个处理者处理,如果该处理者不能够处理该请求,处理权就会传递给下一个处理者去处理,直到找到可以处理该请求的处理者,或者所有的处理者都不能够处理该请求时,请求就会终止。

 观察者模式用于对象之间的解耦合,当一个对象发生状态变化时,所有注册的观察者对象都会收到通知并作出相应的反应,从而实现对象之间的松耦合关系。该模式中包含的角色有:目标(被观察者),观察者,具体目标和具体观察者。被观察者的状态发生变化时,会调用观察者注册的通知方法,并将状态信息传递给观察者,观察者作出相应的反应。

 因此,责任链模式主要用于解决对象之间的依赖关系,将请求的处理过程通过链式结构进行分解,从而降低各个对象之间的耦合度;而观察者模式主要用于解耦对象之间的状态变化,使得对象之间可以更加灵活地进行通信和交互。

(都是字,看到眼晕。回头学一下, 补充一下图片和视频信息)

标签:请求,对象,观察者,模式,处理,相关,设计模式
From: https://www.cnblogs.com/MinervaZhang/p/17254561.html

相关文章

  • 关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)
    关于aws-s3-bucket-静态网站托管相关的查询,这里笔者主要整理一下基于AWSSDKforPython(Boto3)方式,相关的判断和逻辑1、首先是判断s3-bucket有没有开启静态网站托管,即页......
  • 一些操作系统相关的小题记录(未分类)
    4.以下哪—项不能有效利用程序的局部性?()A顺序读取数据对象B将主要的计算逻辑集中在内部循环并做优化C将相关代码拆散到多个c文件中D精简程序binary的大小这道题答......
  • 软件设计模式分类
     CreationalPatterns(创建型设计模式):SingletonPattern(单例模式)   PrototypePattern(原型模式)FactoryMethodPattern(工厂方法模式)   AbstractFac......
  • Linux-权限管理相关操作
    查看文件和目录的权限使用命令:ls-al或者ll使用ls不带参数只显示文件名称,通过ls-al可显示文件或者目录的权限信息。显示的信息依次代表:文件类型,文件权限,文件的用户,文件的......
  • Linux系统信息相关
    查看服务器详细信息lsb_release-a查看网卡对应的pci(bus)地址使用ethtoolethtool-ieth0直接查找查看网卡信息ipaddress查看网卡的bus号lspci|grepEt......
  • Linux 配置文件相关
    手动生成passwd文件cygwin安装完,没有passwd的文件,如果在cygwin安装zsh,无法修改默认为zsh,所以mkpasswd-l>/etc/passwdmkpasswd是生成对应的文件信息,然后导入到passwd......
  • SpringCloud相关面试
    1springcloud的核心组件有哪些?Eureka:服务注册于发现。Feign:基于动态代理机制,根据注解和选择的机器,拼接请求url地址,发起请求。Ribbon:实现负载均衡,从一个服务......
  • 【设计模式】行为型之访问者模式
    前言最近在看Solidity编译器代码(C++实现),其中使用到了设计模式中的访问者模式,这里正好学习一下。GoF的设计模式书虽然讲的很详细,但是这里还是结合实际项目中的应用来说一......
  • 重学Java设计模式-结构型模式-组合模式
    重学Java设计模式-结构型模式-组合模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-08-重学Java设计模式《实战组合模式》.html#重学-java-设计模......
  • 前端设计模式——外观模式
    外观模式(FacadePattern):它提供了一个简单的接口,用于访问复杂的系统或子系统。通过外观模式,客户端可以通过一个简单的接口来访问复杂的系统,而无需了解系统内部的具体实现细......