
设计模式
文章平均质量分 53
超大板栗
这个作者很懒,什么都没留下…
展开
-
12.Java设计模式之访问者模式
问者模式(Visitor Pattern)模式是行为型(Behavioral)设计模式,提供一个作用于某种对象结构上的各元素的操作方式,可以使我们在不改变元素结构的前提下,定义作用于元素的新操作。 换言之,如果系统的数据结构是比较稳定的,但其操作(算法)是易于变化的,那么使用访问者模式是个不错的选择;如果数据结构是易于变化的,则不适合使用访问者模式。 访问者模式一共有五种角色: (1) Vistor(抽象访问者):为该对象结构中具体元素角色声明一个访问操作接口。 (2) ConcreteVisito原创 2022-03-23 21:30:25 · 206 阅读 · 0 评论 -
11.Java设计模式之模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 优点: 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 3、行为由父类控制,子类实现。 缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。 使用场景: 有.原创 2022-03-23 19:59:30 · 175 阅读 · 0 评论 -
10.Java设计模式之策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 StrategyPatternDemo package com.bool.strategy; import com.bool.stra.原创 2022-03-23 19:39:53 · 709 阅读 · 0 评论 -
9.Java设计模式之空对象模式
以前写代码的时候没有专门的封装一个代表NULL的对象,而是直接返回了null 封装一个代表NULL的对象,从业务场景来说比较符合天然的逻辑,符合面向对象的思想 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查 (封装一个代表NULL的对象,从业务场景来说比较符合天然的逻辑,符合面向对象的思想) 代码: AbstractCustomer public abstract class AbstractCustomer { ...原创 2022-03-23 19:30:21 · 1324 阅读 · 0 评论 -
8.Java设计模式之过滤器模式
过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 实现 我们将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Person对象的列表。CriteriaPatternDemo类使用Criteria对象,基于各种标准和它们的结合来过滤Person对...原创 2021-04-19 14:54:47 · 629 阅读 · 0 评论 -
7.Java设计模式之桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。 主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。 如何解决:把这种多角度分类分原创 2021-04-19 14:18:58 · 98 阅读 · 0 评论 -
6.Java设计模式之设配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。 何时使用:1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在..原创 2021-04-19 14:04:27 · 158 阅读 · 0 评论 -
5.Java设计模式之原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 何时使用: 1、当一个系统应该独立于它的产品创建,构成和表示时。 2、当要实例化的类是在运行.原创 2021-04-19 13:47:48 · 76 阅读 · 0 评论 -
4.Java设计模式之建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。 使用场景:1、需要生成的对象具有复杂的内部结构。 2、需要生成的对象内部属性本身相互依赖。 实现 我们假设一个快餐店的商业案例,其中,一个典型的套餐可以是一个汉堡(Burger).原创 2021-04-19 11:54:15 · 83 阅读 · 0 评论 -
3.Java设计模式之单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 单例模式优点: 1、在内存里只有一个实例,减少了内存的开销 2、避免对资源的多重占用 使用场景: demo: SingleObject.java 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用...原创 2021-04-15 16:58:55 · 93 阅读 · 0 评论 -
2.Java设计模式之抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式的存在都是为了简化复杂对象的创建 demo: 目录结构: Shape.java public interface Shape { void draw(); } Color.java public interface Color { void fill(); }原创 2021-04-15 16:53:08 · 103 阅读 · 0 评论 -
1.Java设计模式之工厂模式
使用场景: 1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。 2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 3、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。 用于简化复杂对象的创建 demo: Shape.java public interface Shape { void draw(); } Circle.jav.原创 2021-04-15 16:46:21 · 102 阅读 · 0 评论