设计模式
文章平均质量分 59
阿华-vitor
不断超越自我,快乐生活!
展开
-
关于命令模式这一篇就够了
命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。原创 2024-05-03 09:51:30 · 36 阅读 · 0 评论 -
关于享元模式这一篇就够了
享元模式(Flyweight Pattern)是一种软件设计模式,主要用于运用共享技术来有效地支持大量细粒度的对象。它通过使用共享对象来减少需要创建的对象数量,从而大幅度减少内存的使用量,提高系统的资源利用率。在享元模式中,那些可以被共享的部分,如对象的内部状态等,通常被保存在享元对象中,而对象的外部状态则可以作为参数传递给享元对象的方法。是非享元对象,它保存了享元对象需要的外部状态(如字体样式)。是享元工厂,它负责管理享元对象,并确保相同的字符只被创建一次。原创 2024-05-03 09:51:05 · 280 阅读 · 0 评论 -
关于职责链模式这一篇就够了
职责链模式的代码实现通常包括抽象处理者(Handler)角色和具体处理者(ConcreteHandler)角色。抽象处理者定义了一个处理请求的接口,如果需要,接口还可以定义出一个方法以设定和返回对下家的引用。具体处理者实现了抽象处理者的接口,并在接到请求后,可以选择将请求处理掉,或者将请求传给下家。职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。原创 2024-05-02 14:47:37 · 134 阅读 · 0 评论 -
关于代理模式这一篇就够了
代理模式(Proxy Pattern)是程序设计中的一种设计模式,其定义是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。注意,动态代理只能代理接口,如果类没有实现任何接口,则无法使用动态代理模式。动态代理允许在运行时动态地创建代理对象,而无需为每个需要代理的类手动编写代理类。方法,这个方法会先输出“代理开始...”,然后调用真实角色的。动态代理模式的实现通常依赖于反射机制,在Java中,可以使用。原创 2024-05-02 14:44:17 · 410 阅读 · 0 评论 -
关于备忘录模式这一篇就够了
备忘录模式(Memento Pattern)是GoF(Gang of Four,即四位著名的面向对象编程和设计模式专家)提出的23种设计模式之一,属于行为模式。原创 2024-05-02 14:32:53 · 315 阅读 · 0 评论 -
关于中介者模式者一篇就够了
中介者模式(Mediator Pattern)是一种行为设计模式,它用于降低多个对象和类之间的通信复杂性。该模式通过引入一个中介类来封装一系列对象的交互行为,使得各个对象之间不需要显式地相互引用,从而降低了耦合度,使代码更易于维护和扩展。在客户端代码中,我们创建了一个中介者对象和两个同事对象,并将它们注册到中介者中。然后,我们让第一个同事向第二个同事发送一条消息,这条消息通过中介者进行转发。在这个示例中,我们定义了一个抽象的中介者类。然后,我们创建了一个具体的中介者类。原创 2024-05-02 14:27:52 · 34 阅读 · 1 评论 -
关于迭代器模式这一篇就够了
迭代器模式(Iterator Pattern)是一种行为设计模式,它允许用户通过专门的迭代器对象来遍历聚合对象中的各个元素,而无需暴露聚合对象的内部表示。迭代器模式将遍历的责任从聚合对象中分离出来,封装在迭代器对象中,从而简化了聚合对象的遍历过程,并且支持多种遍历方式。是迭代器的具体实现,它持有聚合对象的引用并维护了一个当前索引来跟踪遍历的位置。在客户端代码中,我们创建了一个聚合对象并添加了一些元素,然后创建了一个迭代器对象来遍历聚合对象中的元素。接口定义了创建迭代器的方法,接口定义了遍历元素的方法,原创 2024-05-02 14:25:02 · 143 阅读 · 0 评论 -
关于解释器模式这一篇就够了
解释器模式(Interpreter Pattern)是一种行为设计模式,它给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。在具体实现时,可以根据具体的文法规则来设计不同的解释器类,并通过组合这些解释器类来构建出一个完整的解释器。由于解释器模式的实现涉及到具体的文法规则和解释器类的设计,因此代码实现会相对复杂。类在这个简单的例子中并没有实际使用到,但在更复杂的解释器模式中,它可能用于存储全局信息,这些信息在解释过程中可能会被用到。在这个示例中,我们定义了一个。原创 2024-05-02 14:17:54 · 42 阅读 · 0 评论 -
关于访问者模式这一篇就够了
访问者模式(Visitor Pattern)是GoF(Gang of Four,即四位作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)提出的23种设计模式中的一种,属于行为模式。它表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。在实际应用中,可以根据具体需求对元素和访问者进行扩展和修改。在客户端代码中,我们创建了两个元素对象和一个访问者对象。方法,完成对元素的访问操作。原创 2024-05-02 14:13:26 · 25 阅读 · 0 评论 -
关于模板方法模式这一篇就够了
在模板方法模式中,通常包括一个抽象类(Abstract Class),该类中定义了一个或多个抽象方法(Abstract Method)以及一个或多个具体方法(Concrete Method)。具体方法也被称为模板方法(Template Method),它定义了一个算法的骨架,其中会调用一个或多个抽象方法。模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义了一个算法的骨架,而允许子类为一个或多个步骤提供实现。是抽象类,它定义了一个模板方法。原创 2024-05-02 14:09:16 · 245 阅读 · 1 评论 -
关于策略模式这一篇就够了
策略模式包含三个角色:环境(Context)角色、抽象策略(Strategy)角色和具体策略(ConcreteStrategy)角色。环境角色负责维持和查询行为类,抽象策略角色由一个接口或抽象类实现,具体策略角色则实现抽象策略接口,包装了相关的算法或行为。策略模式是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。,它持有一个策略对象的引用,并根据该策略对象执行相应的操作。最后,在客户端代码中,我们根据需要选择不同的策略对象,并通过环境角色执行相应的操作。原创 2024-05-02 14:06:26 · 276 阅读 · 0 评论 -
关于状态者模式这一篇就够了
状态者模式(State Pattern),也称为状态模式,是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。状态者模式把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化。状态者模式将每个状态封装成一个类,并在每个状态类中实现该状态下对应的行为。同时,状态者模式会定义一个上下文环境(Context),它负责维护当前的状态对象,并在状态改变时调用新的状态对象的方法。类是上下文环境,它维护了一个当前状态对象,并在处理请求时将请求委托给当前状态对象处理。原创 2024-05-02 14:03:45 · 325 阅读 · 1 评论 -
关于观察者模式这一篇就够了
观察者模式(Observer Pattern)是一种软件设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有依赖它的观察者对象,使它们能够自动更新自己。观察者模式又被称为发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。接口定义了主题对象需要实现的方法,包括注册观察者、移除观察者和通知所有观察者。在Java中,可以使用接口和类来实现观察者模式。接口,并维护了一个观察者列表。接口定义了观察者对象需要实现的方法,即更新方法。原创 2024-05-02 10:41:23 · 35 阅读 · 0 评论 -
关于装饰器模式这一篇就够了
装饰器模式是一种结构型设计模式,它允许你动态地将责任附加到对象上。想要扩展功能,装饰器模式提供了相比于继承更有弹性的替代方案。装饰器模式通过创建一个包装对象(也就是装饰器)来包装真实对象,并在保持接口不变的前提下,给对象添加一些额外的职责。装饰器模式常常用在系统需要动态地增加功能,同时这些功能又可以动态地被撤销的场合。客户端可以根据需要动态地给组件添加装饰器,从而增加组件的功能。原创 2024-05-02 10:37:39 · 151 阅读 · 0 评论 -
关于组合模式这一篇就够了
组合模式(Composite Pattern)是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式模糊了简单元素(叶子节点)和复杂元素(容器节点)的概念,使得客户程序可以像处理简单元素一样来处理复杂元素,从而使客户程序与复杂元素的内部结构解耦。同时,容器对象与抽象构件类之间还建立一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。是抽象构件类,定义了操作的接口以及增加和删除子节点的接口。接口,但由于叶子节点没有子节点,所以。原创 2024-05-02 10:30:52 · 336 阅读 · 0 评论 -
关于桥接模式这一篇就够了
桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种模式又称为柄体(Handle and Body)模式或接口(Interface)模式。在软件系统中,当某个类型由于自身的逻辑而具有两个或多个维度的变化时,桥接模式可以应对这种“多维度的变化”,并利用面向对象的技术使该类型能够轻松地沿着多个方向进行变化,而又不引入额外的复杂度。这个示例展示了如何使用桥接模式将抽象部分和实现部分分离,并使它们能够独立地变化。原创 2024-05-02 10:22:44 · 138 阅读 · 0 评论 -
关于适配器模式这一篇就够了
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口与另一个不兼容的接口协同工作。在适配器模式中,我们创建一个适配器类,该类将不兼容的接口转换为客户端所期望的接口,从而使客户端能够使用原本不兼容的接口。原创 2024-05-02 10:16:44 · 27 阅读 · 0 评论 -
关于原型模式这一篇就够了
是一种创建型设计模式,它使用原型实例来指定创建对象的种类,并通过拷贝这些原型来创建新的对象。其核心在于拷贝原型对象,以系统中已存在的一个对象为原型,直接基于内存二进制流进行拷贝,无需再经历耗时的对象初始化过程(不调用构造函数),从而显著提高性能。原创 2024-05-01 23:21:39 · 27 阅读 · 0 评论 -
关于建造者模式这一篇就够了
建造者模式(Builder Pattern)是一种创建型设计模式,主要用于构建复杂对象,通过分解复杂对象的构建过程,使其按照一定步骤生成,从而使得构建过程更加清晰和易于控制。原创 2024-05-01 23:14:45 · 216 阅读 · 0 评论 -
关于抽象工厂模式这一篇就够了
抽象工厂模式(Abstract Factory Pattern)是面向对象编程中一种创建型设计模式,用于创建一组相互关联的或相互依赖的对象,而无需指定它们具体的类。在抽象工厂模式中,有一个抽象工厂接口(或基类),它声明了一组用于创建一系列产品的抽象方法。然后有一系列具体工厂类,它们实现了抽象工厂接口,并为每种产品提供一个具体的实现类。以下是一个简单的抽象工厂模式的代码实现示例,其中包含了两个产品族(汽车和摩托车)和两个产品(引擎和轮胎)。是具体工厂类,它们分别负责创建汽车和摩托车的产品族。原创 2024-05-01 23:09:24 · 35 阅读 · 0 评论 -
关于工厂方法模式这一篇就够了
void use();原创 2024-05-01 00:03:50 · 112 阅读 · 0 评论 -
关于单例模式这一篇就够了
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。在很多情况下,整个系统只需要拥有一个该类的对象,如果系统允许产生多个该类的对象,就会导致很多不必要的问题,如资源的浪费、系统的性能下降、结果的不一致等。静态内部类方式利用了classloader的机制来保证初始化instance时只有一个线程,是线程安全的,并且效率也较高。枚举方式是线程安全的,并且能自动支持序列化机制,防止反序列化重新创建新的对象。原创 2024-04-30 23:57:52 · 201 阅读 · 1 评论 -
6大设计原则与23种设计模式
定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。特点:一组相互关联的工厂方法,共同约束产品族。应用场景:创建不同的产品对象,客户端应使用不同的具体工厂。优点:客户端与具体实现解耦,易于扩展产品族。缺点:如果新增产品族,改动极大。原创 2019-03-05 22:50:13 · 427 阅读 · 0 评论 -
设计模式之模板设计模式
什么叫模板设计模式呢?个人理解就是在基类里面定义操作中算法的骨架,具体的实现交由子类。为什么要用它呢?自然是能提高开发效率嘛:一方面可以复用代码;另一方面还可以提高代码可读性。开发中最常用的就是设计一个BaseActivity和BaseFragment作为开发模板了。下面就来定义一个这样的模板.1.定义BaseActivity类:public abstract class BaseActi原创 2017-08-16 10:32:27 · 269 阅读 · 0 评论