
设计模式
文章平均质量分 56
赛尔号副船长
凡事有交代,件件有着落,事事有回音。
展开
-
设计模式代码实战-责任链模式
小明所在的公司请假需要在OA系统上发布申请,整个请求流程包括多个处理者,每个处理者负责处理不同范围的请假天数,如果一个处理者不能处理请求,就会将请求传递给下一个处理者,请你实现责任链模式,可以根据请求天数找到对应的处理者。审批责任链由主管(Supervisor), 经理(Manager)和董事(Director)组成,他们分别能够处理3天、7天和10天的请假天数。如果超过10天,则进行否决。其实就是单链表数据结构,一个个递归向后处理,当前节点能处理就返回。原创 2024-04-19 17:21:06 · 708 阅读 · 0 评论 -
设计模式代码实战-模版方法模式
小明喜欢品尝不同类型的咖啡,她发现每种咖啡的制作过程有一些相同的步骤,他决定设计一个简单的咖啡制作系统,使用模板方法模式定义咖啡的制作过程。系统支持两种咖啡类型:美式咖啡(American Coffee)和拿铁(Latte)。方法模版类:定义了模版方法有哪些抽象方法,该抽象方法等具体的算法实现。具体方法:实现模版类的抽象方法。原创 2024-04-17 17:45:46 · 673 阅读 · 0 评论 -
设计模式代码实战-中间者模式
小明正在设计一个简单的多人聊天室系统,有多个用户和一个聊天室中介者,用户通过中介者进行聊天,请你帮他完成这个系统的设计。代理:包含中间者引用,消息都是发送给中间者,中间者再掉用自己的发送信息方法。中间者:持有所有代理,负责发送和接收代理的信息(包含两个方法)原创 2024-04-17 17:23:49 · 369 阅读 · 0 评论 -
设计模式代码实战-策略模式
类似代理模式,Context是那个代理,一个Context只包含了一个策略接口的引用,Context包含不同策略的引用,在Context中处理掉用哪种策略。小明家的超市推出了不同的购物优惠策略,你可以根据自己的需求选择不同的优惠方式。原创 2024-04-16 15:43:08 · 592 阅读 · 0 评论 -
设计模式代码实战-观察者模式
小明所在的学校有一个时钟(主题),每到整点时,它就会通知所有的学生(观察者)当前的时间,请你使用观察者模式实现这个时钟通知系统。主要逻辑是在主题中,负责观察者的增删改和通知,在主题中的通知方法中,通知所有的观察者。注意点:时间从 0 开始,并每隔一个小时更新一次。原创 2024-04-16 15:19:16 · 717 阅读 · 0 评论 -
设计模式代码实战-组合模式
请你设计一个组合模式来管理这些部门和员工,实现对公司组织结构的统一操作。部门和员工都具有一个通用的接口,可以获取他们的名称以及展示公司组织结构。类似树形结构,能够通过树形结构获取树中所有节点的信息。所有节点都有实现相同的接口。它将对象组合成树状结构来表示“部分-整体”的层次关系。组合模式使得客户端可。小明所在的公司内部有多个部门,每个部门下可能有不同的子部门或者员工。以统⼀处理单个对象和对象的组合,⽽⽆需区分它们的具体类型。原创 2024-04-15 14:41:19 · 402 阅读 · 0 评论 -
设计模式代码实战-桥接模式
它通过将【抽象部分】与【实现部分】分离,使它们可以独⽴变化,从⽽达到降低系统耦合度的⽬的。桥接模式的主要⽬的是通过组合建⽴两个类之间的联系,⽽不是继承的⽅式。小明家有一个万能遥控器,能够支持多个品牌的电视。每个电视可以执行开机、关机和切换频道的操作,请你使用桥接模式模拟这个操作。,实现扩展功能的目的。原创 2024-04-14 14:19:58 · 576 阅读 · 0 评论 -
设计模式代码实战-外观模式
举个例⼦,假设你正在编写的⼀个模块⽤来处理⽂件读取、解析、存储,我们可以将这个过程拆成三部分,然后创建⼀个外观类,将⽂件系统操作、数据解析和存储操作封装在外观类中,为客户端提供⼀个简化的接⼝,如果后续需要修改⽂件处理的流程或替换底层⼦系统,也只需在外观类中进⾏调整。小明家的电源总开关控制了家里的三个设备:空调、台灯和电视机。每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭,当输入为4时,表示要关闭所有设备。作者认为和代理模式类似,只是。原创 2024-04-14 13:37:15 · 511 阅读 · 0 评论 -
设计模式代码实战-装饰者模式
小明喜欢品尝不同口味的咖啡,他发现每种咖啡都可以加入不同的调料,比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。原创 2024-04-13 13:17:34 · 445 阅读 · 0 评论 -
设计模式代码实战-代理模式
小明想要购买一套房子,他决定寻求一家房屋中介来帮助他找到一个面积超过100平方米的房子,只有符合条件的房子才会被传递给小明查看。前后添加一些自己的逻辑,避免修改真实对象的代码。代理模式是⼀种结构型设计模式,⽤于。,通过代理对象,可以在访问。原创 2024-04-13 12:52:16 · 680 阅读 · 0 评论 -
设计模式代码实战-适配器模式
小明购买了一台新电脑,该电脑使用 TypeC 接口,他已经有了一个USB接口的充电器和数据线,为了确保新电脑可以使用现有的USB接口充电器和数据线,他购买了一个TypeC到USB的扩展坞。请你使用适配器模式设计并实现这个扩展坞系统,确保小明的新电脑既可以通过扩展坞使用现有的USB接口充电线和数据线,也可以使用TypeC接口充电。在调用方和被调用方之间,加个中间者(适配器)原创 2024-04-12 16:19:32 · 356 阅读 · 0 评论 -
设计模式代码实战-建造者模式
山地车使用的是Aluminum Frame(铝制车架)和 Knobby Tires(可抓地轮胎),公路车使用的是 Carbon Frame (碳车架)和 Slim Tries。小明家新开了一家自行车工厂,用于使用自行车配件(车架 frame 和车轮 tires )进行组装定制不同的自行车,包括山地车和公路车。现在它收到了一笔订单,要求定制一批自行车,请你使用【建造者模式】告诉小明这笔订单需要使用那些自行车配置吧。生成 产品的各个部分。原创 2024-04-12 15:44:20 · 742 阅读 · 0 评论 -
设计模式代码实战-抽象工厂模式
小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。呢,⽐如说“⼿机”,⼀个品牌的⼿机有⾼端机、中低端机之分,这些具体的产品都需要建⽴⼀个单独的⼯⼚类,但。的,都共同属于同⼀个品牌,这就可以使⽤到【抽象⼯⼚模式】作者认为,就是将具有某个。在⼯⼚⽅法模式中,每个。原创 2024-04-12 14:44:12 · 549 阅读 · 0 评论 -
设计模式代码实战-工厂模式
小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。原创 2024-04-11 17:37:48 · 469 阅读 · 0 评论 -
设计模式代码实战-单例模式
小明去了一家大型商场,拿到了一个购物车,并开始购物。请你设计一个购物车管理器,记录商品添加到购物车的信息(商品名称和购买数量),并在购买结束后打印出商品清单。(在整个购物过程中,小明只有。缺点:若发生多个线程并发初始化时,会发生。优点:类加载时就完成实例对象的空间分配,优点:用到时才给实例对象分配空间,能够。缺点:若实例对象一直没被使用,时,就完成了单实例的初始化。可以看到,无论是哪种模式,都。时,才完成单实例的初始化。购物车实例,那么这题的。原创 2024-04-11 15:43:45 · 812 阅读 · 0 评论