
设计模式
文章平均质量分 96
设计模式
陈宝子
不以物喜不以己悲,当然我不反对让我白嫖
展开
-
【行为型模式】观察者模式
观察者模式(Observer)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,其他所有依赖于它的对象都会自动被通知并更新。这个模式也被称为发布/订阅模式。观察者模式通常用于需要实现事件驱动系统的场景中。例如,当用户订阅了一个新闻网站的推送服务后,当这个网站发布了新的文章时,它会将这些更新通知给所有的订阅用户。在这个例子中,订阅用户是观察者,新闻网站是被观察者。观察者模式的好处是减少了对象之间的耦合性,使得它们可以独立地进行修改和扩展。原创 2023-04-17 13:40:48 · 871 阅读 · 0 评论 -
【行为型模式】迭代器模式
迭代器模式(Iterator)是一种行为设计模式,它允许我们遍历一个复杂的集合对象而无需暴露其内部表示。它提供了一种统一的方式来访问一个聚合对象中的各个元素,而不用暴露该对象的内部结构。迭代器模式可以让我们在遍历过程中删除、添加或修改元素,而不会影响到迭代器的正确性。有时候,对于某些复杂的对象,我们可能需要对其中的元素进行遍历操作,但是这个对象的内部结构比较复杂,我们不能直接通过索引来访问其中的元素。此时,就需要采用迭代器模式,通过提供一个迭代器来遍历该对象的元素,而无需了解该对象的内部实现细节。原创 2023-04-18 00:45:00 · 704 阅读 · 4 评论 -
【行为型模式】责任链模式
责任链模式(Chain of Responsibility)是一种行为型设计模式,它允许对象在链上依次处理请求,用户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递,从而避免了请求发送者和接收者之间的直接耦合。具体来说,当一个请求进入责任链时,每个对象都有机会对该请求进行处理,如果当前对象无法处理该请求,则将其传递给下一个对象,直到找到能够处理请求的对象为止。责任链模式在实际开发中非常常用,它可以帮助我们简化代码结构,提高可维护性和可扩展性。原创 2023-04-17 00:00:00 · 1257 阅读 · 0 评论 -
【行为型模式】策略模式
策略模式(Strategy)是一种设计模式,它允许在运行时根据需要选择算法的行为。这个模式将每个算法封装到一个类中,并使它们可互换。让客户端代码可以独立于算法变化而改变其行为。策略模式通常应用于需要多种算法进行操作的场景,如排序、搜索、数据压缩等。在这些情况下,不同的算法有不同的优缺点和适用性,因此需要进行选择。通过使用策略模式,我们可以轻松地切换算法,而无需修改客户端代码。这使得代码更加灵活、可扩展、易于维护,减少了重复的代码,并提高了代码的可读性。原创 2023-04-16 14:51:46 · 342 阅读 · 0 评论 -
【行为型模式】模板方法模式
模板方法模式(Template Method)是一种设计模式,它定义了一个算法的框架,并将具体步骤延迟到子类中实现。在该模式中,父类中定义一个模板方法来描述算法的基本流程,在这个过程中,某些步骤可以通过抽象方法或空置来延迟到子类中实现。通常情况下,当我们处理一些相似的任务时,会发现这些任务之间有很多共性,只是其中一些步骤不同而已。如果每次都重复编写代码,既费时又容易出错。因此,为了解决这个问题,就产生了模板方法模式,它把这些共性代码抽象到父类中,子类只需要覆盖特定的步骤即可。原创 2023-04-16 01:30:00 · 258 阅读 · 0 评论 -
【结构型模式】装饰者模式
装饰者模式Decorator)是一种结构型设计模式,它允许你在不改变对象自身的基础上,动态地给一个对象添加额外的功能。该模式是通过创建一个包装对象来实现的,也就是用一个新的对象来包装真实的对象。这个装饰对象与原始对象拥有相同的接口,因此客户端无需更改代码即可使用装饰后的对象。原创 2023-04-14 16:43:40 · 1065 阅读 · 1 评论 -
【结构型模式】适配者模式
适配器模式是一种常用的结构型设计模式,核心思想是将现有的接口转换为客户端所期望的接口。它允许通过将一个接口转换为另一个接口,将不兼容的类或对象组合在一起。这种模式通常用于集成现有系统或库中不兼容的组件。在软件开发中,我们经常会遇到由不同的团队或不同的供应商编写的代码、服务或库,这些组件可能使用不同的协议、数据格式或接口定义,因此无法直接集成在一起。为了解决这个问题,我们可以使用适配器模式来创建一个适配器,它可以将这些不兼容的组件转换为一个统一的接口,从而实现它们之间的互操作性。原创 2023-04-13 13:53:46 · 705 阅读 · 1 评论 -
【结构型模式】代理模式
代理模式(Proxy)是一种常见的设计模式,它允许通过代理对象控制对某个对象的访问。在代理模式中,代理类扮演着客户端和真正的目标对象之间的中介角色,代理类可以为目标对象提供额外的功能,例如远程访问、延迟加载、权限控制等。使用代理模式可以实现对象的封装,同时也能够降低系统耦合度,增强了系统的灵活性和可扩展性。如果在开发过程中需要对某个对象进行控制,并且希望保持系统的高内聚、低耦合特性,那么代理模式是一个不错的选择。原创 2023-04-12 20:02:13 · 743 阅读 · 1 评论 -
【创建者模式】原型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。这种类型的设计模式属于创建型模式,用于创建重复对象的同时又能保证性能,是创建对象的最佳方式之一。优点为性能高,简单性能高: 使用原型模式复用的方式创建实例对象,比使用构造函数重新创建对象性能要高;(针对类实例对象开销大的情况)流程简单: 原型模式可以简化创建的过程,可以直接修改现有的对象实例的值 , 达到复用的目的;(针对构造函数繁琐的情况)缺点为实现复杂,坑多。原创 2023-04-12 01:30:00 · 592 阅读 · 1 评论 -
【创建者模式】建造者模式
建造者模式(Builder Pattern)旨在将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。简单来说就是使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。原创 2023-04-11 14:25:22 · 506 阅读 · 0 评论 -
【创建者模式】单例模式
所谓类的单例设计模式 ( singleton ),就是采取了一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的静态方法。由于单例模式只生成了一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。原创 2023-04-10 10:58:58 · 393 阅读 · 1 评论 -
【创建者模式】工厂模式
根据百科的定义,工厂模式是“工厂是用于创建其他对象的对象”。传统开发在不使用任何模式下程序运行正常,但是却有着耦合严重的问题。假如我们要更换/修改对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦。原创 2023-04-10 21:00:00 · 601 阅读 · 0 评论