
设计模式
设计模式专栏,深度解析经典设计模式,分享实际应用场景与优雅的软件架构思路。
好奇的菜鸟
路虽远,行则将至;事虽难,做则必成。wx:yjtzfywh
展开
-
策略模式与状态模式:设计模式的比较与Java实现
策略模式与状态模式:设计模式的比较与Java实现原创 2024-10-13 00:00:00 · 301 阅读 · 0 评论 -
访问者模式-大话设计模式
访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。访问者模式的目的是要把处理从数据结构分离出来。有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较合适的,因为访问者模式使得算法操作的增加变得容易。原创 2023-03-24 15:34:08 · 903 阅读 · 0 评论 -
解释器模式-大话设计模式
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。原创 2023-03-24 15:11:29 · 821 阅读 · 0 评论 -
享元模式-大话设计模式
享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够大幅度地减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。原创 2023-03-24 14:55:22 · 895 阅读 · 0 评论 -
中介者模式-大话设计模式
Colleague叫作抽象同事类,而ConcreteColleague是具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但他们却都认识中介者对象,Mediator是抽象中介者,定义了同事对象到中介者对象的接口,ConcreteMediator是具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接收消息,向具体同事对象发出命令。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。原创 2023-03-24 14:38:28 · 827 阅读 · 0 评论 -
职责链模式-大话设计模式
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。原创 2023-03-24 11:12:21 · 891 阅读 · 0 评论 -
命令模式-大话设计模式
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。原创 2023-03-24 10:59:16 · 851 阅读 · 0 评论 -
桥接模式-大话设计模式
桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式的核心意图是把这些实现独立出来,让它们各自变化。这就使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。原创 2023-03-24 10:35:49 · 862 阅读 · 0 评论 -
迭代器模式-大话设计模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。原创 2023-03-24 00:13:05 · 825 阅读 · 0 评论 -
组合模式-大话设计模式
组合模式(Composite),将对象组合成树形结构以表示'部分-整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。原创 2023-03-23 23:47:25 · 809 阅读 · 0 评论 -
备忘录模式-大话设计模式
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。原创 2023-03-23 23:18:07 · 822 阅读 · 0 评论 -
适配器模式-大话设计模式
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。适用于旧系统升级,第三方对接。原创 2023-03-23 23:03:34 · 950 阅读 · 0 评论 -
状态模式-大话设计模式
状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断很简单,那就没必要用'状态模式'了。状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。原创 2023-03-23 22:11:08 · 880 阅读 · 0 评论 -
抽象工厂模式-大话设计模式
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。AbstractProductA和AbstractProductB是两个抽象产品,之所以为抽象,是因为它们都有可能有两种不同的实现;IFactory是一个抽象工厂接口,它里面应该包含所有的产品创建的抽象方法。而ConcreteFactory1和ConcreteFactory2就是具体的工厂了。原创 2023-03-23 16:33:18 · 909 阅读 · 0 评论 -
观察者模式-大话设计模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。原创 2023-03-22 15:00:28 · 870 阅读 · 0 评论 -
建造者模式-大话设计模式
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。'建造者模式(Builder)',又叫生成器模式。建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。原创 2023-03-22 14:15:09 · 845 阅读 · 0 评论 -
外观模式-大话设计模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。原创 2023-03-22 13:57:17 · 824 阅读 · 0 评论 -
模板方法-大话设计模式
模板方法(Template Method)模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。原创 2023-03-22 12:09:42 · 850 阅读 · 0 评论 -
原型模式-大话设计模式
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原创 2023-03-21 16:51:15 · 844 阅读 · 0 评论 -
工厂方法模式-大话设计模式
工厂方法模式(FACTORY METHOD)是一种常用的类创建型,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过以达到、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是;具体工厂;抽象产品;具体产品。抽象工厂(Creator)角色:是工厂方法模式的核心,与无关。任何在模式中创建的对象的工厂类必须实现这个接口。具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。原创 2023-03-21 15:49:55 · 1058 阅读 · 0 评论 -
代理模式-大话设计模式
代理模式的定义:为其他对象提供一种以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。著名的代理模式例子为(英语:reference counting)指针对象。当一个复杂对象的多份副本须存在时,代理模式可以结合以减少存储器用量。典型作法是创建一个复杂对象及多个代理者,每个代理者会引用到原本的复杂对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。原创 2023-03-07 15:24:52 · 1039 阅读 · 0 评论 -
装饰者模式-大话设计模式
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。(2) 装饰对象包含一个真实对象的引用(reference)这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(1) 装饰对象和真实对象有相同的。原创 2023-03-07 11:42:08 · 881 阅读 · 0 评论 -
策略模式-大话设计模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。原创 2023-03-06 15:35:31 · 865 阅读 · 0 评论 -
UML科普文,一篇文章掌握14种UML图
UML是的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。【概念】 类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。【目的】用来表示类、接口以及它们之间的静态结构和关系。在类图中,常见的有以下几种关系。【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。【目的】用来展示各个组件之间的依赖关系。订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。转载 2023-03-06 14:09:12 · 3450 阅读 · 0 评论 -
GoF 23种设计模式中英文对照
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原来保存的状态。给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。定义一个用于创建对象的接口,让子类决定实例化哪一个类。转载 2023-03-06 13:55:47 · 1154 阅读 · 0 评论 -
简单工厂模式-大话设计模式
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF。实现一个计算程序,给定两个数字,返回结果。原创 2023-02-20 20:23:30 · 873 阅读 · 0 评论 -
设计模式-抽象工厂(JAVA)
2、工厂类 3、测试类原创 2022-07-08 17:25:34 · 911 阅读 · 0 评论 -
JAVA单例模式-双重检验锁(防止反射、序列化多个)
【代码】JAVA单例模式-双重检验锁(防止反射多个)原创 2022-03-24 13:34:27 · 3005 阅读 · 0 评论 -
设计模式-单例模式(JAVA)
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。原创 2022-07-08 16:39:48 · 838 阅读 · 0 评论