![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 82
GitLqr
A Little White Developer
展开
-
Kotlin - 改良装饰者模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言装饰者模式作用:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。本质:该模式通过创建一个包装对象,来包裹真实的对象。核心操作:创建一个装饰类,包含一个被装饰类的实例装饰类重写所有被装饰类的.原创 2022-05-28 10:44:04 · 283 阅读 · 0 评论 -
Kotlin - 改良责任链模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言责任链模式作用:避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。举例:OKHttp 的拦截器、Servlet 中的 FilterChain二.原创 2022-05-22 22:10:14 · 578 阅读 · 0 评论 -
Kotlin - 改良迭代器模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言迭代器模式作用:将遍历和实现分离开来,在遍历的同时不需要暴露对象的内部表示举例:ArrayList、LinkedList、TreeSet 均可通过 iterator() 方法获取到迭代器对元素进行遍历,不需要关心.原创 2022-05-08 19:17:58 · 747 阅读 · 0 评论 -
Kotlin - 改良策略模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言策略模式作用:让算法的变化独立于使用算法的客户核心操作:定义了算法族,分别封装起来,让它们之间可以相互替换二、使用策略模式例子:游泳运动员的游泳姿势重点:算法抽离,封装成策略作为一个游泳运动员,.原创 2022-05-04 19:55:56 · 824 阅读 · 0 评论 -
Kotlin - 改良观察者模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言观察者模式作用:定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。核心操作:观察者(订阅者)添加或删除.原创 2022-03-13 22:24:21 · 3765 阅读 · 0 评论 -
Kotlin - 改良构建者模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言构建者模式作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。核心操作:私有化复杂对象(Product)的类构造器,设计并创建 Builder 类。二、使用构建者模式例子:.原创 2022-03-06 20:18:20 · 2440 阅读 · 1 评论 -
Kotlin - 改良工厂模式
欢迎关注微信公众号:FSA全栈行动 👋Kotlin - 改良工厂模式Kotlin - 改良构建者模式Kotlin - 改良观察者模式Kotlin - 改良策略模式Kotlin - 改良迭代器模式Kotlin - 改良责任链模式Kotlin - 改良装饰者模式一、前言设计模式是软件工程中解决特定问题的一种指南,我们常说 Java 有 23 种设计模式,而多范式的 Kotlin 作为更好的 Java,拥有很多新的语言特性,在使用原本 Java 中常用的设计模式时,可以有哪些方面的改良呢.原创 2022-02-27 23:26:45 · 2653 阅读 · 0 评论 -
DesignPattern - 状态模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、迭代器模式介绍迭代器模式(Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部实现,属于行为型模式。核心组成抽象容器(Aggregate):提供创建具体迭代器角色的接口,一般是接口,包括一个 iterator()方法,例如 java 中的 Collection 接口,List 接口,Set 接口等具体容器角色(ConcreteAggregate):实现抽象容器的具体实现类,比如 List 接口原创 2022-02-13 19:56:23 · 445 阅读 · 0 评论 -
DesignPattern - 备忘录模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、备忘录模式介绍备忘录模式(Memento Pattern)又叫做快照模式,属于行为模式。在不破坏封闭的前提下,捕获一个对象的内部状态,保存对象的某个状态,以便在适当的时候恢复对象。使用备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问核心组成Originator 发起者:记录当前的内部状态,并负责创建和恢复备忘录数据,允许返回到先前状态所需的所有数据,可以根据需要决定 Memento 存储自己的哪些内部状态Memento 备忘录原创 2022-02-13 19:54:38 · 2169 阅读 · 0 评论 -
DesignPattern - 迭代器模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、迭代器模式介绍迭代器模式(Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部实现,属于行为型模式。核心组成抽象容器(Aggregate):提供创建具体迭代器角色的接口,一般是接口,包括一个 iterator()方法,例如 java 中的 Collection 接口,List 接口,Set 接口等具体容器角色(ConcreteAggregate):实现抽象容器的具体实现类,比如 List 接口原创 2021-11-29 00:17:38 · 583 阅读 · 0 评论 -
DesignPattern - 命令模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、命令模式介绍命令模式(Command Pattern)请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的对象,并把该命令传给相应的对象 执行命令,属于行为型模式。命令模式是一种特殊的策略模式,体现的是多个策略执行的问题,而不是选择的问题核心组成抽象命令(Command):需要执行的所有命令都在这里声明具体命令(ConcreteCommand):定义一个接收者和行为之间的弱耦合,实现 execute() 方法,负责原创 2021-10-21 00:26:35 · 159 阅读 · 0 评论 -
DesignPattern - 责任链模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、责任链模式介绍责任链模式(Chain of Responsibility Pattern)客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁具体的处理对象,让多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条调用链,并沿着这条链传递该请求,直到有一个对象处理它才终止。2 个核心行为:一是处理请求,二是将请求传递到下一节点核心组成Handler 抽象处理者:定义一个处理请求的接口C原创 2021-10-10 22:11:51 · 123 阅读 · 0 评论 -
DesignPattern - 观察者模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、观察者模式介绍观察者模式(Observer)定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态时,所以依赖于它的对象都会得到通知并自动更新,也叫做发布订阅模式 Publish/Subscribe,属于行为型模式核心组成Subject 主题:持有多个观察者对象的引用,抽象主题提供了一个接口可以增加和删除观察者对象;有一个观察者数组,并实现增、删及通知操作Observer 抽象观察者:为具体观察者定义一个接口,在得到主题的通知时更新自己原创 2021-09-15 21:13:12 · 85 阅读 · 0 评论 -
DesignPattern - 模板方法模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、模板方法模式介绍模板方法模式(Template Method)定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤,属于行为型模式核心组成抽象模板(Abstract Template):定义一个模板方法,这个模板方法一般是一个具体方法,给出一个顶级算法骨架,而逻辑骨架的组成步骤在相应的抽象操作中,推迟到子类实现模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法基本方原创 2021-09-13 23:30:55 · 97 阅读 · 0 评论 -
DesignPattern - 策略模式【行为型】
欢迎关注微信公众号:FSA全栈行动 ????一、策略模式介绍策略模式(Strategy Pattern)定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换核心组成Context 上下文:屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化Strategy 策略角色:抽象策略角色,是对策略、算法家族的抽象,定义每个策略或算法必须具有的方法和属性ConcreteStrategy 具体策略角色:用于实现抽象策略中的操作,即实现具体的算法应用场景外出旅游,选择骑自行车、原创 2021-09-09 01:15:05 · 188 阅读 · 0 评论 -
DesignPattern - 享元模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、享元模式介绍享元模式(Flyweight Pattern)属于结构型模式,主要用于减少创建对象的数量,以减少内存占用和提高性能,它提供了减少对象数量从而改善应用所需的对象结构的方式;享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。状态内部状态:不会随环境的改变而所有不同,是可以共享的外部状态:它随环境的改变而改变的,是不可以共享的,因此外部状态是由客户端来保持(因为环境的变化一般是由客户端引起)核心组成抽象享元原创 2021-09-06 20:45:09 · 106 阅读 · 0 评论 -
DesignPattern - 外观模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、外观模式介绍外观模式(Facade Pattern)又叫门面模式,隐藏系统的复杂性,定义一个高层接口,供客户端(也就是使用者)访问,该接口使得系统更加容易使用。核心组成外观角色(Facade):客户端可以调用这个角色的方法,这个外观方法知道多个子系统的功能和实际调用子系统角色(SubSystem):每个子系统都可以被客户端直接调用,子系统不知道门面的存在应用场景MVC 三层架构中,各层之间使用 interface 接口进行交互,不用担原创 2021-08-25 22:58:54 · 78 阅读 · 0 评论 -
DesignPattern - 代理模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、代理模式介绍代理模式(Proxy Pattern)属于结构模式,为其他对象提供一种代理以控制对这个对象的访问,客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。核心作用:保护目标对象,增强目标对象(与装饰器模式类似)核心组成Subject:抽象接口,目标对象类和代理类都要实现的一个抽象接口Proxy:代理类,包含了对目标对象类的引用,从而可以随意的操作目标对象的方法RealSubject:目标对象类,也叫委托类,原创 2021-08-23 20:16:50 · 295 阅读 · 0 评论 -
DesignPattern - 装饰器模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、装饰器模式介绍装饰器模式(Decorator Pattern)也叫包装设计模式,属于结构型模式,它是作为现在的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象增加功能,一般两种方式 继承 和 关联组合 。装饰器模式使用的是关联组合,将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用对象的行为来增强功能,比使用继承更加灵活。核心组成抽象组件(Component):定义组件的方法具体组件(ConcreteC原创 2021-08-18 22:51:55 · 94 阅读 · 0 评论 -
DesignPattern - 组合模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、组合模式介绍组合模式又叫部分整体模式,将对象组合成树形结构以表示“部分-整体”的层次结构,可以更好的实现管理操作;组合模式使得用户可以使用一致的方法操作单个对象和组合对象;部分-整体对象的基本操作多数是一样的,但是也有不一样的地方。本质:组合模式可以使用一棵树来表示核心组成组合中的对象声明接口(Component):在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理 Component 子部件。容器对象(Compo原创 2021-08-11 21:29:25 · 87 阅读 · 0 评论 -
DesignPattern - 桥接模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、桥接模式介绍桥接模式是一种结构型模式,将抽象部分与实现部分分离,使它们都可以独立的变化,通俗来说,是通过组合来桥接其它的行为/维度。应用场景系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性不想使用因继承导致系统类的个数急剧增加的系统有时候一个类,可能会拥有多个变化维度,比如啤酒,有不同的容量和品牌,可以使用继承组合的方式进行开发,假如维度很多,就容易出现类的膨胀,使用桥接模式就可以解决这个问题,且解耦优点抽象和实现的分离原创 2021-08-09 21:48:24 · 106 阅读 · 0 评论 -
DesignPattern - 适配器模式【结构型】
欢迎关注微信公众号:FSA全栈行动 ????一、适配器模式介绍适配器模式(Adapter Pattern)属于结构型模式,作为两个不兼容的接口之间的桥梁。常见的几类适配器接口的适配器模式【空实现】:不想实现一个接口中所有的方法时,可以创建一个 Adapter,实现所有方法,在写别的类的时候,继承这个 Adapter 类即可。类的适配器模式【继承(旧) + 实现(新)】:想将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。对象的适配器原创 2021-08-05 23:42:02 · 141 阅读 · 0 评论 -
DesignPattern - 建造者模式【创建型】
欢迎关注微信公众号:FSA全栈行动 ????一、建造者模式介绍建造者模式(Builder Pattern)使用多个简单的步骤一步步构建成一个复杂的对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建出不同的实例;允许用户只通过指定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节。核心组成Product:产品角色Builder:抽象建造者,定义多个通用方法和构建方法ConcreteBuilder:具体建造者,可以有多个Director:指挥者原创 2021-08-02 21:33:23 · 221 阅读 · 0 评论 -
DesignPattern - 原型模式【创建型】
欢迎关注微信公众号:FSA全栈行动 ????一、原型模式介绍原型模型(Prototype) 是一种对象创建型模式,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,主要用于创建重复的对象,同时又能保证性能。工作原理是将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过原型对象拷贝自己来实现创建过程。原型模型应该是最简单的设计模式了,实现一个接口,重写一个方法即可完成原型模式。核心组成Prototype:声明克隆方法的接口,是所有具体原型类的公共父类,也就是 Clone原创 2021-07-27 23:44:55 · 114 阅读 · 0 评论 -
DesignPattern - 工厂模式【创建型】
欢迎关注微信公众号:FSA全栈行动 ????一、工厂模式介绍工厂模式提供了一种创建对象的最佳方式,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。例子:需要购买一辆车,不用管车辆如何组装,且可以购买不同类型的汽车,比如轿车、SUV、跑车,直接去 4s 店购买就行(4s 店就是工厂)工厂生产电脑,除了 A 品牌、还可以生产 B、C、D 品牌电脑支付业务开发,会统一下单和支付接口,具体的支付实现可以是微信、支付、银行卡等分类:简单工厂模式:通原创 2021-07-27 00:12:18 · 136 阅读 · 0 评论 -
DesignPattern - 单例模式【创建型】
欢迎关注微信公众号:FSA全栈行动 ????一、单例模式介绍通过单例模式可以保证系统中,应用该模式的类只有一个对象实例。好处:节省内存(没必要存在 多个功能相同的对象)提高性能(有些对象的创建很耗系统资源)分类:饿汉:提前创建对象(class 一加载就创建)懒汉:延迟创建对象(调用 getInstance() 时再创建)实现步骤:私有化构造函数提供获取单例的方法二、单例模式代码实现1、饿汉式饿汉方式:提前创建好对象优点:实现简单,没有多线程同步问原创 2021-07-22 21:20:43 · 95 阅读 · 1 评论 -
DesignPattern - 设计原则与设计模式初探
欢迎关注微信公众号:FSA全栈行动 ????一、设计原则设计模式是站在设计原则的基础之上的,所以在学习设计模式之前,有必要了解一下设计原则软件设计开发原则为了让代码有更好的重用性,可读性,可靠性,可维护性有六大原则,英文首字母拼在一起就是 SOLID(稳定的),所以也称之为 SOLID 原则1、单一职责原则(Single Responsibility Principle)一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因是实现 高内聚、低耦合 的指原创 2021-07-20 21:32:31 · 126 阅读 · 0 评论