
设计模式
文章平均质量分 61
思维助力美好人生
这个作者很懒,什么都没留下…
展开
-
【设计模式】装饰者模式的应用
装饰者模式可以有效分离性能组件和功能组件,从而提升模块的可维护性,并增加模块的复用性。 JDK实现中,例如OutputStream和InputStream类族的实现。OutputStream对象提供的方法比较简单,功能也比较弱,但通过各种装饰者的增强,OutputStream对象可以赋予强大的功能。FileOutputStream为系统核心类,实现了向文件写入数据。 使用DataOutputStream可以在FileOutp...原创 2022-07-12 11:21:50 · 389 阅读 · 1 评论 -
【设计模式】享元模式的应用
定义: 享元模式是设计模式中少数几个以提高系统性能为目的的模式。 如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。优势: 1、可以节省重复创建对象的开销,因为被享元模式维护的相同对象只会被创建一次,当创建对象比较耗时,便可以节省大量时间。 2、由于创建对象数量减少,所以对系统内存的需求也减少,将使GC的压力也相应的降低,进而使得系统拥有一个更健康的内存结构和更快的反应速度。享元模式与对象池的区别: 在一个对象池中,所有的对象都是等价的,任意两个对象在任何使原创 2022-07-12 10:56:05 · 280 阅读 · 1 评论 -
【设计模式】观察者模式的系统应用
观察者模式系统应用场景、观察者模式优缺点、本质与选用时间点原创 2022-07-11 14:24:47 · 232 阅读 · 0 评论 -
【设计模式】生成器模式的系统应用
应用背景: 日志记录类重载了不同种类,不同数量的参数,逻辑相似,原始代码中存在大量重复代码,但整体的构建流程是相同的,故可以运用生成器模式进行改造生成器模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示示例:首先定义生成器需要定义的接口。根据业务和步骤 此具体分为了4个方法,其中前3个为基础方法,最后一个方法completelyToMsg()用于整合前面的数据结果紧接着需要实现Builder的实现,每一种不同的子类对于getInetAddress和toRed原创 2022-03-07 18:14:40 · 268 阅读 · 0 评论 -
【设计模式】外观模式的应用
应用背景: 通过运用外观模式,可以让客户端对具体业务逻辑实现关心更少,不涉及具体业务逻辑内部的实现细节,客户端的调用者操作更简单。具体逻辑: 在外观模式中不一定通过接口实现,它是客户端和被访问的系统之间的一个通道,通常指的是类,这个类称为"外观"。客户端直接与外观类中的方法进行交互,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了** 在分层结构中,service接口层可充当中间的外观,service的具体实现实现之后的业务逻辑,c原创 2022-03-07 13:49:21 · 381 阅读 · 0 评论 -
【设计模式】策略模式的系统应用
应用背景: 系统中存在数据相关的统计模块,该统计模块从最开始只包含资讯类数据的统计逐步扩展至全字段类数据统计,后来又增加了其他系统基本上所有接口都相同的统计功能,差异性在于统计需要的客户人员数量的不同。故可以引入策略模式来优化大量相同逻辑相同接口不同的数据统计功能。示例:此上下文环境类用来对于客户端提供访问策略功能接口, 其中构造函数用来注入子策略实现类的实例, 每个接口的实现在Strategy的基类中都有实现。策略基类实现节选一:首先最上部定义了一些需要存储在Redis中使用的key,原创 2022-03-04 15:03:39 · 729 阅读 · 0 评论 -
【设计模式】职责链模式系统应用
应用背景: 系统内存在着多种不同类型的充值类型及方式,例如资讯类型充值、全字段类型充值、接口类型充值、总类型充值等方式,在获取实例对象时,通过程序优化 运行基础的职责链模式的应用来摒弃大量判断逻辑示例:如下方法最下面的注释部分是最基础的写法 , 通过引入设计模式的应用, 让该方法简化至一条语句完成该方法的作用是通过int类型的充值类型获取对应的实例对象。接下来看一下每个子类是如何处理返回实体对象的:** 根据实际业务的应用频次,这里限制了不同充值类型链接后的顺序,我以资讯充值为起点来原创 2022-03-04 14:20:45 · 431 阅读 · 0 评论 -
【设计模式】模版模式的系统应用
应用背景: 对于获取列表数据,对于多种不同类别的列表数据通过抽象化的方法规定了具体的逻辑,并通过模版模式固定这些抽象接口先后顺序,具体的抽象方法交由子类实现不同的逻辑示例: 核心抽象基类 该类中定义了一些必须交由子类实现的抽象方法 请注意getSubData() 和getSubTop() 两个方法体现了模版模式的应用其中一个子类的实现:如上这里可以根据方法不同的级别,将privete放在类的最下面, public -> protected -> private 。另外原创 2022-03-04 11:58:13 · 92 阅读 · 0 评论 -
【设计模式】工厂模式的系统应用
应用背景: 系统中存在多种充值相关的方式,例如资讯类型充值、全字段类型充值、接口类型充值、总充值类型等,我们可以运用工厂模式在获取信息和设置信息时优化程序逻辑代码示例:首先设计一个父类的抽象类,里面包含创建所需对象的抽象方法,这些抽象方法就是工厂方法注意: 如上图子类实现这些抽象方法时候,不真正由子类来实现具体功能,而是在子类方法里面做选择,选择具体的产品实现对象产品父类:父类通常会有使用这些产品对象实现一定的功能的方法,而且这些方法所实现的功能通常都是公共的功能,不管子类选择了原创 2022-03-04 11:14:57 · 489 阅读 · 0 评论 -
【收藏】设计模式概括思想
分类 设计模式 简述 一句话归纳 目的 生活案例 创建型设计模式 (简单来说就是用来创建对象的) 工厂模式(Factory Pattern) 不同条件下创建不同实例 产品标准化,生产更高效 封装创建细节 实体工厂 单例模式(Singleton Pattern) 保证一个类仅有一个实例,并且提供一个全局访问点 世上只有一个我 保证独一无二 CEO 原型模式(Prototype Pattern) 通过拷贝转载 2021-09-07 17:16:47 · 98 阅读 · 0 评论 -
23种设计模式学习笔记【上篇】
1、简单工厂: 选择实现Factory去接收客户端的请求,可以根据不同的参数按需返回相关实例。2、外观模式【Facade】: 封装交互,简化调用。功能的组合调用外观通常指的类,是客户端和被访问的系统之间的一个通道。外观名义上是对外的public方法。 Facade对象知道各个模块,但各个模块不应该知道Facade对象。目的是为了让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统。不给子系统添加新的功能接口,外观应该是包装已有的功能,它主要负责组合已有功能来实现客户需要,.原创 2021-08-19 09:59:08 · 165 阅读 · 0 评论