设计模式
文章平均质量分 80
本专栏将详细讲解最主要的23中设计模式
道法自然 实事求是
这个作者很懒,什么都没留下…
展开
-
设计模式的六大设计原则
一个类只负责一个单一明确的职责。如果一个类同时负责多个职责,来自职责A的需求变更引起的修改可能会导致职责B的功能发生故障。比如说一个类T原本是符合单一职责的,后来因为某种原因或者是需求变更了,需要将职责P细分为颗粒度更细的职责P1和职责P2,这时候可以考虑将类T拆分为T1和T2两个类来分别负责这两个职责。原创 2023-09-10 10:19:05 · 574 阅读 · 0 评论 -
为什么要使用设计模式,以及使用设计模式的好处
它们是经过多年验证的成功实践,可以帮助开发人员更好地解决常见的设计和架构问题。提高团队协作: 设计模式提供了一种共享的设计和编码方法,这使得不同开发人员之间更容易理解和协作。提高代码的可重用性: 设计模式鼓励将常见的解决方案抽象出来,并将其封装在可重用的组件中。跨平台和跨语言: 许多设计模式是通用的,可以应用于不同的编程语言和开发环境。例如,享元模式可以减少内存使用,代理模式可以实现延迟加载,提高了程序的效率。降低风险: 设计模式是经过广泛验证的解决方案,因此使用它们可以减少错误和缺陷的出现。原创 2023-09-10 09:47:55 · 921 阅读 · 0 评论 -
设计模式Java版:16状态模式(行为型)
状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为。状态模式将对象的行为封装在不同的状态对象中,并将状态的变化作为对象间的转换,以实现更灵活、可扩展的状态管理。原创 2023-06-14 16:11:29 · 229 阅读 · 2 评论 -
设计模式Java版:06装饰模式(结构型)
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象添加新功能,同时又不改变其原有结构。装饰模式通过将对象包装在一个装饰器类中,从而动态地添加额外的行为或责任。装饰模式的核心思想是通过组合而非继承来扩展对象的功能。它以透明的方式向对象添加新功能,使得客户端可以在运行时动态地选择添加的功能,同时保持代码的灵活性和可扩展性。原创 2023-06-14 15:15:54 · 91 阅读 · 0 评论 -
设计模式Java版:25中介者模式(行为型)
中介者模式(Mediator Pattern)是一种行为型设计模式,它通过封装一系列对象之间的交互,将对象之间的直接通信转变为通过一个中介者对象进行的间接通信。中介者模式促进了对象之间的松耦合,并且提供了一种集中式的控制方式。中介者模式的核心思想是将对象之间的通信行为封装到中介者对象中,而不是让对象之间直接相互引用。这样,每个对象只需要与中介者对象进行通信,而不需要了解其他对象的存在。通过集中管理对象之间的通信,中介者模式能够简化系统的设计和维护,并提高系统的可扩展性。原创 2023-06-12 21:26:04 · 93 阅读 · 0 评论 -
设计模式Java版:24责任链模式(行为型)
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,旨在将请求的发送者和接收者解耦,并将请求沿着处理链进行传递,直到有一个处理者能够处理该请求为止。在责任链模式中,通常有多个处理者(Handler)组成一个处理链。当请求到达处理链的起始点时,第一个处理者尝试处理该请求。如果该处理者能够处理请求,它就会处理请求并结束。否则,它会将请求传递给下一个处理者,以此类推,直到有一个处理者能够处理该请求或处理链结束。原创 2023-06-12 21:20:51 · 85 阅读 · 0 评论 -
设计模式Java版:26享元模式(结构型)
享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在通过共享对象来最小化内存使用和提高性能。享元模式通过将对象的状态分为内部状态(Intrinsic State)和外部状态(Extrinsic State),将共享的内部状态存储在享元对象中,而外部状态则通过客户端传递进来。享元模式的核心思想是共享对象,通过共享尽可能多的内部状态,来减少系统中对象的数量,从而节省内存空间。对于具有相同或相似状态的对象,只需要创建一个共享的享元对象,其他对象可以通过引用来共享它的状态。原创 2023-06-12 21:06:47 · 167 阅读 · 0 评论 -
设计模式Java版:12外观模式(结构型)
外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中一组复杂的接口。外观模式将子系统的复杂性隐藏在一个高层接口后面,使得客户端可以通过简单的方式与子系统进行交互,而不需要了解子系统的内部实现细节。原创 2023-06-11 21:37:57 · 74 阅读 · 0 评论 -
设计模式Java版:22桥接模式(结构型)
桥接模式(Bridge Pattern)是一种结构设计模式,它旨在将抽象部分与其实现部分分离,使它们可以独立变化。桥接模式通过将类的抽象与其实现解耦,使它们可以独立地进行扩展、修改和重用。桥接模式的核心思想是将抽象部分和实现部分分别定义为独立的类层次结构,通过桥接(Bridge)将两个独立的类层次连接起来。这样,抽象部分和实现部分可以独立地进行扩展,而不会相互影响。在桥接模式中,抽象部分由抽象类或接口表示,它包含对实现部分的引用。实现部分由具体类或接口表示,它提供了抽象部分定义的方法的具体实现。原创 2023-06-11 21:25:21 · 177 阅读 · 1 评论 -
设计模式Java版:10模版方法模式(行为型)
模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式基于"开闭原则",它将算法的不变部分封装在父类中,而将可变的部分交由子类来实现。通过定义一个抽象类或接口,其中包含一个模板方法和一些抽象方法或钩子方法,模板方法定义了算法的骨架,具体的步骤由子类实现。原创 2023-06-11 21:18:18 · 70 阅读 · 0 评论 -
设计模式Java版:23命令模式(行为型)
命令模式是一种行为型设计模式,它将请求发送者(发送命令的对象)与接收者(执行命令的对象)解耦,通过将请求封装成一个对象,使得可以将不同的请求参数化,并支持将请求队列化、记录日志、撤销操作等。原创 2023-06-10 21:50:30 · 63 阅读 · 0 评论 -
设计模式Java版:27解释器模式(行为型)
解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义语言的文法,并在给定语言中解释句子的意义。该模式属于行为型设计模式的一种,它可以将复杂的语法分解为一系列简单的语法规则,并通过解释器来解释和执行这些规则。原创 2023-06-10 21:44:35 · 190 阅读 · 0 评论 -
设计模式Java版:13建造者模式(创建型)
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建复杂对象的过程与其表示相分离,从而可以使用相同的构建过程来创建不同的表示。建造者模式的目的是将一个复杂对象的构建过程与其表现分离,使得同样的构建过程可以创建不同的表现形式。通过将对象的构建细节封装在一个独立的建造者类中,客户端可以通过指定不同的建造者来创建不同的对象。建造者模式的核心思想是通过将复杂对象的构建过程分解成多个简单的步骤,以及通过指导者来组织和控制这些步骤的顺序,最终构建出一个完整的复杂对象。原创 2023-06-10 21:37:33 · 95 阅读 · 0 评论 -
设计模式Java版:01简单工厂模式(创建型)
简单工厂模式是一种创建型设计模式,它提供了一个统一的接口来创建不同类型的对象,而无需暴露对象的具体创建逻辑。简单工厂模式由三个主要组件组成:工厂(Factory):负责创建对象的工厂类。它包含一个静态方法或实例方法,根据传入的参数或条件判断来实例化并返回具体的产品对象。产品(Product):抽象产品类或接口,定义了产品的共同属性和方法。具体产品(Concrete Product):实现了产品接口或继承了抽象产品类,提供了具体的产品实现。原创 2023-06-08 21:51:45 · 56 阅读 · 0 评论 -
设计模式Java版:14观察者模式(行为型)
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生变化时,所有依赖它的对象都能够得到通知并自动更新。观察者模式的核心是将一个对象(称为主题或可观察者)与其他对象(称为观察者)进行解耦。主题维护了一个观察者列表,并提供了方法用于添加、移除和通知观察者。当主题的状态发生变化时,它会遍历观察者列表,调用每个观察者的更新方法,从而实现对观察者的通知。原创 2023-06-08 21:42:41 · 61 阅读 · 0 评论 -
设计模式Java版:09工厂方法模式(创建型)
抽象产品(Product):定义了产品的接口,是工厂方法模式所创建对象的超类或接口。具体产品(Concrete Product):实现了抽象产品接口的具体类,是工厂方法模式所创建的对象。抽象工厂(Factory):声明了创建产品的工厂方法,返回抽象产品类型的对象。它可以是接口、抽象类或具体类。具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象。原创 2023-06-02 21:40:59 · 61 阅读 · 0 评论 -
设计模式Java版:28访问者模式(行为型)
访问者(Visitor):定义了对数据结构中每个元素的访问操作。它通常会声明多个visit()方法,用于处理不同类型的元素。元素(Element):数据结构中的每个元素都需要接受访问者对象的访问。通常会提供一个accept()方法,该方法接受一个访问者对象作为参数。具体访问者(Concrete Visitor):实现了访问者接口,定义了对不同元素类型的具体操作。每个具体访问者都可以根据需要实现不同的visit()方法。原创 2023-06-02 21:29:05 · 61 阅读 · 0 评论 -
设计模式Java版:20迭代器模式(行为型)
迭代器模式(Iterator Pattern)是一种行为设计模式,它提供一种遍历容器对象(例如列表、集合、数组等)元素的统一接口,而无需了解底层数据结构的实现细节。迭代器模式的主要目标是将遍历操作从容器对象中分离出来,使得可以独立地对容器进行遍历操作,同时保持容器对象的封装性。这样,我们可以通过迭代器逐个访问容器中的元素,而不必暴露容器内部的表示方式和结构。原创 2023-06-02 21:19:17 · 87 阅读 · 0 评论 -
设计模式Java版:21单例模式(创建型)
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式的定义如下:单例模式是一种设计模式,用于限制一个类只能创建一个实例。它通过提供一个全局访问点来控制对该实例的访问,并确保在整个应用程序中只存在一个实例。原创 2023-05-31 22:14:00 · 51 阅读 · 0 评论 -
设计模式Java版:07代理模式(结构型)
代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问。代理模式在不改变原始对象的情况下,提供了对其方法的间接访问,从而可以在调用前后执行额外的逻辑或控制访问权限。原创 2023-05-28 21:20:14 · 62 阅读 · 0 评论 -
设计模式Java版:15抽象工厂模式(创建型)
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。抽象工厂模式通过引入抽象工厂和具体工厂的概念,将对象的实例化操作封装在工厂类中,从而实现了对象的创建与使用相分离。抽象工厂模式的定义如下:抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。原创 2023-05-28 20:49:04 · 89 阅读 · 0 评论 -
设计模式Java版:18备忘录模式(行为型)
备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下捕获对象的内部状态,并在需要时恢复对象到之前的状态。备忘录模式的核心思想是将对象的状态保存到一个备忘录对象中,以便在需要时可以还原到先前的状态。这样可以在不暴露对象内部细节的情况下,提供对对象状态的恢复和回滚的能力。原创 2023-05-28 20:32:55 · 62 阅读 · 0 评论 -
设计模式Java版:17适配器模式(结构型)
适配器模式(Adapter Pattern)是一种结构型设计模式,它用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而无法一起工作的类可以协同工作。适配器模式通过引入一个适配器类,将原始类的接口转换成目标接口,从而使得客户端可以通过目标接口调用原始类的功能。适配器类包装了原始类,并实现了目标接口,同时在方法中调用原始类的相应方法,将客户端的请求转发给原始类。原创 2023-05-26 21:40:13 · 165 阅读 · 1 评论 -
设计模式Java版:02策略模式(行为型)
策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。策略模式通过定义一系列算法(即策略),并将其封装在独立的类中,使得它们可以相互替换,从而使算法的变化独立于使用它们的客户端。策略模式的主要目的是提供一种灵活的方式来定义、封装和交换算法。它将不同的算法封装在各自的类中,并使它们可以互相替换,从而使得算法可以独立于客户端而变化。原创 2023-05-24 17:16:12 · 238 阅读 · 2 评论