设计模式
文章平均质量分 76
1.应对面试中的设计模式相关问题
2.告别写被人吐槽的烂代码
3.提高复杂代码的设计和开发能力
4.让读源码、学框架事半功倍
5.为职场发展做铺垫
BrightChen666
这个作者很懒,什么都没留下…
展开
-
设计模式-解释器模式(Interpreter)
解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一个语言的文法,并解析语言中的表达式。具体来说,解释器模式通过定义一个解释器来解释语言中的表达式,从而实现对语言的解析和执行。在解释器模式中,语言中的每个符号都被定义为一个(对象)类,这样整个程序就被转换成一个具体的对象树。每个节点(即对象)都表示一个表达式中的一个符号,而整棵树则表示一个完整的表达式。通过遍历这棵树,解释器就可以对表达式进行解析和执行。原创 2024-05-09 13:55:03 · 1739 阅读 · 0 评论 -
设计模式-备忘录模式(Memento)
备忘录模式(Memento Pattern)是一种软件设计模式,它允许在不破坏对象封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。该模式属于行为型模式,主要目的是提供一种可以恢复对象状态的机制。备忘录模式主要包含两个主要角色:发起人(Originator)和备忘录(Memento)。发起人负责创建一个备忘录来记录当前时刻的内部状态,并且可以使用这个备忘录来恢复状态。而备忘录则负责存储发起人的内部状态,并防止其他对象访问备忘录的内容。原创 2024-04-24 18:24:21 · 1476 阅读 · 0 评论 -
设计模式- 中介者模式(Mediator)
中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的直接相互依赖,使得对象间的交互通过一个中介者对象来进行协调。在中介者模式中,对象之间不再直接相互调用,而是通过中介者对象来传递消息和协调行为。中介者模式的主要目的是简化对象之间的复杂交互关系,降低对象之间的耦合度,使得系统更加易于维护和扩展。通过将交互逻辑集中在一个中介者对象中,可以避免对象之间直接相互依赖和通信的混乱。中介者模式适用于对象之间存在复杂网状结构关系,且这些关系导致依赖关系混乱和难以复用的场景。原创 2024-04-23 15:21:35 · 2674 阅读 · 2 评论 -
设计模式-迭代器模式(Iterator)
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又不需要改变该对象的内部表示。迭代器模式将遍历逻辑从聚合类中分离出来,从而简化了聚合类。它也支持以多种遍历方式来遍历一个聚合对象。迭代器模式的主要缺点可能是增加了一些复杂性,因为需要在聚合对象中增加创建迭代器对象的接口,还需要实现迭代器接口。原创 2024-04-19 15:54:37 · 881 阅读 · 0 评论 -
设计模式-观察者模式(Observer)
观察者模式是一种行为型设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式通常涉及两类对象:主题(Subject) 和 观察者(Observer)。主题负责维护自身的状态,并在状态发生变化时通知所有注册的观察者。观察者则对主题的状态变化感兴趣,并希望在状态变化时得到通知,以便做出相应的处理。原创 2024-04-18 15:21:21 · 1590 阅读 · 0 评论 -
设计模式-访问者模式(Visitor)
访问者模式是一种行为型设计模式。访问者模式的核心思想在于表示对一个对象结构中各元素的操作,同时又不暴露这些操作的具体实现。它主要应用于以下场景:扩展功能:当你希望为对象结构添加新的操作时,而不希望修改这些对象的类,可以使用访问者模式来实现这一点。分离职责:该模式允许将算法与其作用的对象结构分离开来,使得可以独立地改变对象结构和算法。增加灵活性:通过使用访问者模式,可以在不改变现有类的情况下,增加新的操作,从而提高了系统的可扩展性和可维护性。原创 2024-04-17 17:36:26 · 1643 阅读 · 0 评论 -
探索String类的trim方法:去除字符串两端的“隐形守护者”
在Java的String类中,trim()方法是一个常用的方法,它的作用是去除字符串两端的空白字符。这里的空白字符包括但不限于空格、制表符、换行符等。trim()方法返回的是一个新的字符串,原字符串的内容并不会被改变。原创 2024-04-17 11:08:24 · 449 阅读 · 0 评论 -
设计模式-命令模式(Command)
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。该模式将请求(命令)封装成对象,使得可以用不同的请求对客户端进行参数化,具体的请求可以在运行时更改、排队或记录。它讲发出者和接收者解耦(顺序:发出者→命令→接收者)。命令模式的本质是封装请求。命令模式的主要优点包括:降低系统的耦合度,增加新的命令很容易,使得这些命令在运行时可以灵活地进行调整。同时,命令模式可以与队列模式结合,以实现对请求排队和记录日志等功能。原创 2024-04-16 19:26:42 · 2052 阅读 · 0 评论 -
设计模式-模板方法模式(TemplateMethod)
模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。具体来说,模板方法模式的关键特点包括:抽象类:在抽象类中定义一个模板方法,该方法给出了算法的框架。具体方法:在抽象类中实现算法中不变的部分,这些方法通常是私有的,以避免子类对其进行修改。抽象方法:在抽象类中声明一些抽象方法,这些方法是为了在子类中实现特定于子类的步骤。钩子:可以提供一些默认实现的方法,这些方法通常为空或者包含默认逻辑,子类可以选择性地覆盖这些方法。原创 2024-04-15 17:55:01 · 1590 阅读 · 0 评论 -
设计模式-代理模式(Proxy)
代理模式(Proxy Pattern)是程序设计中的一种设计模式。该模式为某对象提供一种代理,以控制对该对象的访问。用户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。简言之,代理模式为其他对象提供了一种中介,允许在客户端和目标对象之间插入一个代理对象,通过代理对象来间接访问目标对象。代理模式的主要优点:在客户端与目标对象之间起到一个中介作用和保护目标对象的作用。代理对象可以扩展目标对象的功能。代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩性。原创 2024-04-14 10:00:00 · 791 阅读 · 0 评论 -
设计模式-享元模式(Flyweight)
享元模式(Flyweight Pattern)是一种结构型设计模式,它运用共享技术来有效地支持大量细粒度对象的复用。这种模式通过共享已经存在的对象来大幅度减少需要创建的对象数量,避免大量相似对象的开销,从而提高系统资源的利用率。享元模式的主要目的是通过共享不变的部分来减少对象数量并节约内存,其本质是缓存共享对象以降低内存消耗。这种模式通常应用于系统底层的开发,以解决系统的性能问题,特别是在有大量相似对象需要管理的场景中。原创 2024-04-13 10:00:00 · 1029 阅读 · 0 评论 -
设计模式-外观模式(Facade)
外观模式是一种对象结构型模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更加容易使用。外观模式适用于当一个系统有多个复杂的子系统需要交互时,通过引入外观角色来简化调用者与各个子系统之间的交互。原创 2024-04-12 11:24:38 · 598 阅读 · 0 评论 -
设计模式-组合模式(Composite Pattern)
组合模式(Composite Pattern)是一种对象结构型模式,其定义是将多个对象组合成树形结构以表示“整体-部分”关系的层次结构。它使得客户端对单个对象和组合对象的使用具有一致性。在组合模式中,对象被组织成树形结构,其中顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含更多的树枝节点和叶子节点。这种结构使得客户端可以统一地处理单个对象和组合对象,无需关心它们的具体类型。原创 2024-04-11 15:58:22 · 1362 阅读 · 0 评论 -
设计模式-装饰者模式(Decorator)
装饰者模式(Decorator Pattern)是一种结构型设计模式,它的定义是在不改变原有对象结构的基础上,动态地给该对象增加一些职责(即增加其额外功能)。这种模式允许向一个现有的对象添加新的功能,同时又不改变其结构。它是继承的一种替代方案,可以实现在运行时动态地扩展对象的行为,而无需修改原有代码。原创 2024-04-10 11:30:54 · 1288 阅读 · 0 评论 -
设计模式-桥接模式
桥接模式是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使它们可以独立地变化。原创 2024-04-09 19:42:58 · 1316 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式是一种结构型设计模式,它的主要目的是在不改变现有代码的情况下,使不兼容的接口之间能够正常工作。这种模式通过创建一个中间转换的适配器来将一个对象转换成我们所需要的接口。适配器模式的角色组成包括:目标接口(Target):这是我们期望的接口,需要适配的标准接口。源对象(Source):这是需要被适配的不兼容对象。适配器对象(Adapter):充当中间转换角色,该对象将源对象转换成目标接口。原创 2024-04-08 11:33:39 · 959 阅读 · 0 评论 -
设计模式-建造者模式
1. 建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。2. 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。原创 2024-04-07 14:24:39 · 951 阅读 · 0 评论 -
设计模式-原型模式
原型模式是一种创建型设计模式,它通过复制现有的对象来创建新的对象,而不是通过传统的构造函数或工厂方法。这种模式通常用于那些创建成本较高或者需要重复使用相同或相似对象的场景。原创 2024-04-03 16:04:58 · 982 阅读 · 0 评论 -
设计模式-工厂方法模式
工厂方法模式是一种创建型设计模式,它通过引入一个抽象工厂类来封装对象的创建过程。原创 2024-04-02 17:13:01 · 806 阅读 · 0 评论 -
设计模式-抽象工厂模式
抽象工厂模式是一种创建型设计模式,用于创建一系列相关或相互依赖的对象。这种模式的核心思想是提供一个接口来创建一族对象,而不需要指定这些对象的具体类。客户端通过这个接口与具体产品的创建过程解耦,使得客户端可以灵活地替换产品族中的任何产品,而不会影响到其他产品的使用。原创 2024-04-01 22:36:35 · 790 阅读 · 0 评论 -
设计模式-单例模式总结
单例模式是一种常见的设计模式,它用于确保一个类只有一个实例,并提供一个全局访问点。原创 2024-03-31 21:30:00 · 532 阅读 · 0 评论 -
设计模式-单例模式(枚举)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。原创 2024-03-31 20:00:00 · 443 阅读 · 0 评论 -
设计模式-单例模式(静态内部类)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。原创 2024-03-31 18:45:00 · 588 阅读 · 0 评论 -
设计模式-单例模式(双重检查)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。原创 2024-03-31 14:26:36 · 1669 阅读 · 0 评论 -
设计模式-单例模式(懒汉式)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。原创 2024-03-31 14:06:51 · 997 阅读 · 0 评论 -
设计模式-单例模式(饿汉式)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)原创 2024-03-31 13:41:13 · 1140 阅读 · 0 评论 -
设计模式-概述篇
设计模式是在软件开发中,针对在软件设计中反复出现的问题而提出的优秀解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的,具有极高的实用价值。设计模式并不是一种具体的技术或技巧,而是一种指导性的思想,它告诉我们在什么情况下应该使用什么技术或技巧来解决问题。使用设计模式可以帮助我们提高代码的可重用性、可维护性和可扩展性,同时也可以提高软件开发的效率和质量。设计模式主要分为三种类型:创建型模式、结构型模式和行为型模式。原创 2024-03-30 10:00:00 · 646 阅读 · 0 评论 -
七大设计原则 - 核心思想与总结
七大设计原则 - 核心思想原创 2024-03-29 15:09:59 · 270 阅读 · 0 评论 -
合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承原创 2024-03-29 15:02:41 · 356 阅读 · 0 评论 -
迪米特法则
迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不对外泄露任何信息原创 2024-03-28 17:36:24 · 282 阅读 · 0 评论 -
里士替换原则 (Liskov Substitution Principle)
1. 保证基类所拥有的性质在子类中仍然成立2. 子类扩展父类的功能,但是不能改变父类原有的功能原创 2024-03-26 17:41:14 · 800 阅读 · 0 评论 -
开闭原则(Open Closed Principle)
1.开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则2.一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节3.当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化4.编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则原创 2024-03-27 17:59:20 · 537 阅读 · 0 评论 -
依赖倒转(倒置)原则 (Dependence Inversion Principle)
抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程使用接口或抽象类的目的是制定好规范原创 2024-03-25 19:57:57 · 389 阅读 · 1 评论 -
接口隔离原则(Interface Segregation Principle)
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上原创 2024-03-23 23:53:53 · 267 阅读 · 1 评论 -
七大原则-单一职责原则
单一职责原则:一个类只负责一项职责原创 2024-03-22 14:17:34 · 363 阅读 · 1 评论