![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 83
南七行者
相信时间会创造奇迹。
展开
-
对中介者模式的理解
第一行包括一个整数N,表示用户的数量(1 <= N <= 100) 第二行是N个用户,比如User1 User2 User3,用空格分隔 第三行开始,每行包含两个字符串,表示消息的发出者和消息内容,用空格分隔。小明正在设计一个简单的多人聊天室系统,有多个用户和一个聊天室中介者,用户通过中介者进行聊天,请你帮他完成这个系统的设计。对于每个用户,输出一行,包含该用户收到的所有消息内容。原创 2024-05-13 22:50:16 · 839 阅读 · 0 评论 -
对命令模式的理解
【代码】对命令模式的理解。原创 2024-05-03 17:01:03 · 1379 阅读 · 0 评论 -
对策略模式的理解
接下来的 N 行,每行输入两个整数,第一个整数M( 0 < M < 400) 表示商品的价格, 第二个整数表示优惠策略,1表示九折优惠策略,2表示满减优惠策略。小明家的超市推出了不同的购物优惠策略,你可以根据自己的需求选择不同的优惠方式。请你设计一个购物优惠系统,用户输入商品的原价和选择的优惠策略编号,系统输出计算后的价格。输入的第一行是一个整数 N(1 ≤ N ≤ 20),表示需要计算优惠的次数。每行输出一个数字,表示优惠后商品的价格。个人觉得这种方式更灵活。原创 2024-04-26 22:44:20 · 1463 阅读 · 0 评论 -
对观察者模式的理解
小明所在的学校有一个时钟(主题),每到整点时,它就会通知所有的学生(观察者)当前的时间,请你使用观察者模式实现这个时钟通知系统。发布者状态(数据)变化后,通知订阅者(Subscriber)/观察者。输入的第一行是一个整数 N(1 ≤ N ≤ 20),表示学生的数量。接下来的 N 行,每行包含一个字符串,表示学生的姓名。对于每一次时钟更新,输出每个学生的姓名和当前的时间。主题状态(数据)变化后,通知订阅了该主题的观察者。最后一行是一个整数,表示时钟更新的次数。打开文件 or 保存文件。原创 2024-04-21 21:35:22 · 892 阅读 · 0 评论 -
对享元模式的理解
享元模式只有一个目的: 减少内存消耗。如果程序没有遇到内存容量不足的问题, 则可以暂时忽略该模式。当然了也有其他称呼:缓存、Cache、Flyweight。我理解:享元,共享元数据。原创 2024-04-20 21:37:49 · 423 阅读 · 0 评论 -
对组合模式的理解
接下来的 N 行,每行描述一个部门或员工的信息。部门的信息格式为 D 部门名称,员工的信息格式为 E 员工名称,其中 D 或 E 表示部门或员工。请你设计一个组合模式来管理这些部门和员工,实现对公司组织结构的统一操作。部门和员工都具有一个通用的接口,可以获取他们的名称以及展示公司组织结构。第一行是一个整数 N(1 <= N <= 100),表示后面有 N 行输入。小明所在的公司内部有多个部门,每个部门下可能有不同的子部门或者员工。输出公司的组织结构,展示每个部门下的子部门和员工。显然,这并不是正确的实现。原创 2024-04-20 20:10:24 · 974 阅读 · 0 评论 -
对桥接模式的理解
实际开发中,我们希望Spring帮我们组织好bean,我们拿来就用即可。装饰器模式,是同一接口(同一抽象)的组合。桥接模式,是不同接口(不同抽象)的组合。原创 2024-04-16 22:57:23 · 446 阅读 · 0 评论 -
对外观模式的理解
每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭,当输入为4时,表示要关闭所有设备。请你使用外观模式编写程序来描述电源总开关的操作。接下来的 N 行,每行包含一个数字,表示对应设备的开关操作(1表示关闭空调,2表示关闭台灯,3表示关闭电视机,4表示关闭所有设备)。输出关闭所有设备后的状态,当输入的数字不在1-4范围内时,输出Invalid device code.第一行是一个整数 N(1 <= N <= 100),表示后面有 N 行输入。原创 2024-04-15 23:16:57 · 754 阅读 · 0 评论 -
对装饰器模式的理解
破罐子破摔,世界是熵增的…原创 2024-04-13 21:57:50 · 1259 阅读 · 0 评论 -
对代理模式的理解
在【对AOP的理解】中,提到过代理模式。本篇文章进一步谈谈我对代理模式的理解。@Slf4j@Service@Resource@Override@Resource...UserService是接口,有两个实现类,Spring不知道到底要注入哪个bean,因此报错了。原创 2024-04-06 23:43:30 · 633 阅读 · 0 评论 -
对适配器模式的理解
如果fits()方法不变,那么就得将SquarePeg适配成RoundPeg。接口A:RoundHole::fits。数据A:RoundPeg。原创 2024-03-23 21:23:16 · 652 阅读 · 0 评论 -
对原型模式的理解
如User的ak字段。原创 2024-03-23 19:29:57 · 625 阅读 · 0 评论 -
对建造者模式的理解
山地车使用的是Aluminum Frame(铝制车架)和 Knobby Tires(可抓地轮胎),公路车使用的是 Carbon Frame (碳车架)和 Slim Tries。小明家新开了一家自行车工厂,用于使用自行车配件(车架 frame 和车轮 tires )进行组装定制不同的自行车,包括山地车和公路车。现在它收到了一笔订单,要求定制一批自行车,请你使用【建造者模式】告诉小明这笔订单需要使用那些自行车配置吧。接下来的 N 行,每行输入一个字符串,字符串表示客户的自行车需求。原创 2024-03-15 22:35:47 · 676 阅读 · 0 评论 -
对抽象工厂模式的理解
小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。接下来的 N 行,每行输入一个字符串,字符串表示家具的类型。家具类型分为 “modern” 和 “classical” 两种。对于应用层,需要操作按钮和复选框,前提是获取对应的对象。而不同操作系统,返回的对象应该不同。输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示订单的数量。对于每笔订单,输出字符串表示该订单需要生产家具的信息。原创 2024-03-03 19:10:12 · 865 阅读 · 0 评论 -
对简单工厂模式、工厂方法模式的思考
接下来的 N 行,每行输入一个字符串和一个整数,字符串表示积木的类型。积木类型分为 “Circle” 和 “Square” 两种。整数表示该积木生产的数量。小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示生产的次数。对于每个积木,输出一行字符串表示该积木的信息。多线程场景下,不能用HashMap。原创 2024-03-03 14:32:12 · 789 阅读 · 0 评论 -
对单例模式的饿汉式、懒汉式的思考
单例模式是指一个类在JVM中只有一个实例。在类加载的时候就创建好了实例。创建实例延迟到使用该实例前。原创 2024-03-02 22:39:15 · 665 阅读 · 0 评论