
设计模式
文章平均质量分 77
陈亦康
25届学生,热爱全栈,擅长后端开发. 欢迎来我的网站:http://chenyikang.xyz/ts-blog/#/index/explore
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式 - 外观(门面)模式就要这样学!
外观模式(Facade):也叫门面模式,为子系统中的一组接口提供了一个一致的界面,此模式定义了高层接口,这个接口使得这堆子系统更加容易使用.通俗来讲,就是 外观类 对 大量的子系统又进行了一层封装,对外提供一个聚合了多个子系统功能的接口.例如上述我们讲的 用户表 分表的情况,就可以在外观类中提供一个 查询接口,这个查询接口的工作就是 调用三张表的 Repo,查询到数据,然后聚合成 VO,并返回. 这样将来外部只需要调用这个 外观类 的查询接口,就实现了复杂查询和组装操作,无需知道内部实现细节~原创 2024-06-30 19:16:10 · 449 阅读 · 0 评论 -
设计模式 - 桥接模式,就要这样学!
桥接模式:是一种结构性设计模式,将抽象(Abstraction)和实现(Implementation)放在两个不同的类层次中,使两个层次可以独立改变.抽象:抽象类:就是真个桥接的桥梁,里面聚合了行为的 实现接口 .精确抽象:是具体的逻辑实体,通过父类中提供的聚合行为接口来完成不同的交互.行为:实现接口:这里就定义了实体的行为. 此接口被抽象类聚合.具体实现:实现了具体的实体行为.原创 2024-06-30 15:29:39 · 480 阅读 · 0 评论 -
设计模式 - 原型模式,就该这样学!
原型模式(Prototype Pattern)是一种创建型的设计模式,运行一个对象通过复制自身的实例来创建新的对象. 简而言之,提供了一个快速创建新对象的方法,这个新对象是已有对象的精确复制品(根据具体的业务场景,决定是深拷贝 还是 浅拷贝).简化对象创建:复制复杂对象时,可以通过原型模式简化对象的复制过程,并且可以动态的配置对象状态.原创 2024-06-30 01:08:21 · 816 阅读 · 0 评论 -
设计模式 - 命令模式,就该这样学!
命令模式是一种行为型设计模式,主要就是将每种请求或对象封装为一个独立的对象,从而可以集中管理这些请求或操作,比如 多个操作打包成一个执行、请求队列化执行、对操作进行日志记录、撤销.......命令模式通过将请求的 发送者(客户端) 和 接收者(请求的执行者) 进行解耦,提高了更大的维护性和灵活性.例如,电视机和遥控器,我们就相当于客户端,通过 遥控器(命令调用者)上的按钮(具体命令),来操控电视(请求执行者)。原创 2024-04-24 23:47:35 · 521 阅读 · 0 评论 -
设计模式 - 单例模式(饿汉,懒汉),就该这样学!
是一种给常见的设计模式,先来他谈谈何为设计模式,在代码领域里,很多程序员的水平参差不齐,于是就有大佬们根据一些常见的需求,整理出来的一些应对办法;那么单例就是指单个实例(对象),也就是说一个类只能有一个实例,例如,在中国,一个男人只能娶一个老婆是一个道理;单例模式,本质上就是借助变成语言的语法特性,强制限制某个类,不能创建多个实例。在Java中有些东西是天然的单例,例如static,他可以修饰成员/属性,也就是我们口中熟知的类成员/类属性,实际上这种叫法,也是有一定原因的,也就是这个类特有的成员和属性。原创 2022-09-16 11:12:11 · 2783 阅读 · 0 评论 -
设计模式 - 行为型考点模式:责任链模式(概述 | 案例实现 | 优缺点 | 使用场景)
为了避免请求发送者和多个请求处理者耦合在一起,就将所有请求处理者通过前一个对象记住下一个对象的引用的方式形成一条链;当有请求到来时,可以将请求沿着这条链传递,知道有对象能处理他为止.原创 2023-10-10 12:44:19 · 504 阅读 · 0 评论 -
设计模式 - 行为型模式考点篇:观察者模式(概述 | 案例实现 | 优缺点 | 使用场景)
观察者模式又称为 发布 - 订阅 模式.,就是让多个观察者对象同时监听同一个主题对象. 这个主题对象在变化的同时,也会把消息推送给所有观察者对象,使他们能够更新自己.例如微信公众号,当微信用户点击关注某一公众号,当这个公众号的内容更新后,他就会把消息推送给所有关注了当前公众号的用户. 此时微信用户就是观察者,公众号就是被观察者.抽象主题:所有的观察者对象都放在一个 List 集合中,每一个主题都可以有任意数量的观察者,并且提供 增加 和删除 观察者对象的接口.原创 2023-10-10 21:34:30 · 298 阅读 · 0 评论 -
设计模式 - 行为型模式考点篇:迭代器模式(概述 | 案例实现 | 优缺点 | 使用场景)
提供一个聚合对象,内部通过迭代器来访问聚合对象中的一系列数据,而不暴露聚合对象的内部实现.例如,现在有一个班级的学生(包装在一个 List 容器中的聚合元素),我需要按照学号拿到每一个学生,此时就需要把遍历这个班级的学生(List 容器)交给迭代器完成.抽象迭代器:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法.具体迭代器:实现抽象迭代器接口中定义的方法,完成聚合对象的遍历,记录遍历的当前位置.抽象聚合:定义存储、添加、删除聚合元素以及创建迭代器对象接口.原创 2023-10-10 10:49:30 · 693 阅读 · 0 评论 -
设计模式 - 策略模式,就该这样学!
例如一家百货公司,规定在逢年过节的时候进行促销活动. 针对不同的节日(春节、中秋节、端午节)推出不同的促销活动,然后由 促销员 将促销活动展示给客户.策略模式设计的每一个算法都封装了起来,使他们可以相互替换,通过一个对象委派不同的算法给相应的客户进行使用.客户端必须知道所有的策略类,并自行决定使用哪个策略类.策略模式将造成产生多个策略类(一个策略产生一个类).针对以上案例进行实现.原创 2023-10-09 23:08:19 · 1188 阅读 · 0 评论 -
设计模式 - 模板方法模式,就该这样学!
这就像是,我们在设计一个程序的时候经常可能会遇到这种情况:“设计了一个算法步骤,确定了这些步骤的执行顺序,但其中某些步骤还是未知,需要根据具体的业务情况而定”,此时就可以使用模板方法模式,使其放到子类实现.例如,炒菜的步骤时固定的,分为倒油、热油、倒入要炒食物、倒调料、翻炒这几个步骤,其中 倒油、热油、翻炒这几个步骤是固定的,而炒什么食物 和 倒调料 都是要根据情况而定的.在一个算法骨架中,将某些算法的步骤延迟倒子类中,使得这些算法的可以根据具体的环境实现.原创 2023-10-09 21:48:08 · 549 阅读 · 0 评论 -
设计模式 - 装饰者模式,就该这样学!
例如,现在要开发一个点餐系统,有一个抽象类快餐类,快餐店里有炒面、炒饭,分别去继承实现. 如果现在需要添加额外的配料(比如 鸡蛋),那么计算额外加钱就会不叫麻烦,就需要分别给 炒面类 和 炒饭类 定义一个子类(鸡蛋炒面类、鸡蛋炒饭类). 再者,如果要新增一个快餐类(比如 凉皮),就需要定义更多的子类. 通过装饰者模式就可以在不需要添加子类的情况下,动态的添加配料.动态扩展:比继承具有更好的扩展性(继承时静态附加责任,装饰者时动态添加责任),可以在不修改原类的情况下,给对象添加责任.原创 2023-10-09 16:42:50 · 603 阅读 · 0 评论 -
设计模式 - 适配器模式,就该这样学!
将一个类的接口转换成客户希望的另一个接口,使得原本不兼容的接口能一起工作.比如,如果你使用的是苹果手机,那么就意味着充电器的充电口也是苹果标准的,而你现在只有一个 type-c 插孔的插座能充电,因此就需要一个转换器(一头type-c,另一头 苹果插头),就可以让原本不兼容的 苹果插头 一起工作.目标接口:当前客户所期待的接口,它可以是抽象类或者接口(上述的 苹果插头).适配者类:是被访问的现存组件库中的接口(上述的 type-c).适配器类:是一个转换器,原创 2023-10-09 11:46:48 · 793 阅读 · 0 评论 -
设计模式 - 代理模式,就该这样学!
由于一些原因,我们不能直接访问目标对象,这时候需要提供一个目标对象的代理,通过代理来实现对目标对象的访问.比如,我要去买火车票,就需要在火车触发的前几天坐车去火车站买票,相当的麻烦. 但是还有一种方式,就是我们可以直接在 12306 网站上直接进行买票,十分方便,这里的 12306 网站就相当于 代理.抽象主题类:通过接口或者抽象类声明真实主题要干的事情(业务).真实主题类:实现了抽象主题中的具体业务.代理类:内部包含 真实主题类 的实例对象,可以访问和扩展真实主题的功能.原创 2023-10-08 17:00:30 · 1055 阅读 · 0 评论 -
设计模式 - 工厂模式、建造者模式,就该这样学!
简单工厂不是一种设计模式,反而比较像是一种编程习惯.抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。具体产品 :实现或者继承抽象产品的子类具体工厂 :提供了创建产品的方法,调用者通过该方法来获取产品。原创 2023-10-08 09:45:47 · 3583 阅读 · 1 评论 -
设计模式 - 七大软件设计原则
通俗来讲,开闭原则就是告诉我们,不要取修改已经完成的程序,而是在原有的基础上进行扩展. 比如在 Java 中,我们设计程序的时候,不要写死,要留有接口,将来如果有什么需要进行扩展,直接在原有的接口上进行开发.通俗来讲,单一职责原则就是告诉我们,一个类不能太“累”. 在一个系统中,如果一个类承担的责任的越多,那么他被复用的可能性越小,耦合度很高. 所以我们在设计程序的时候就因该将这些职责封装到不同的类中.这就好比,在电脑关机的时候,直接点击关机按钮,此时就会关闭其他的运行程序,然后才关闭电源.原创 2023-10-07 16:48:57 · 452 阅读 · 0 评论