设计模式
文章平均质量分 61
设计模式
莫言静好、
这个作者很懒,什么都没留下…
展开
-
设计模式之桥接模式
一 模式背景 在很多时候,继承足以解决很多问题了,但是有的还不是更优秀的解决方案。比如有时候可能会遇到那种组合式的类,有2个维度可以变化,进行不同的组合,然后完成不同的功能。比如开发报表功能的时候,可选则的报表工具是一个维度,要构建什么类型的报表又是一个维度,我们可以通过不同的报表工具完成这些报表的产生。如图示: 如果我们定一个抽象基类ReportTools, 然后要实现以XML,CVS格式输出形成报表,我们使用JasperReport,则需要创建2个类: JasperXMLReportTools原创 2021-09-15 11:46:43 · 111 阅读 · 0 评论 -
设计模式之装饰器模式
一 模式背景 有些时候,我们希望在原有类的基础上,对功能进行增强或者减少,并且还要能够动态组合功能。我们抛开设计模式首先考虑到的是添加功能函数,或者是直接继承。很明显第一种方式是最low的,不符合开闭原则;第二种方式呢,如果使用继承,我们也肯定可以完成功能,而且效果比直接修改以前代码好很多,但是扩展性,灵活性还是差一些,如果有很多不同的组合或者搭配,整个继承体系变得臃肿。 二 装饰者模式(Decorator) 装饰者模式:就是可以动态给一个对象添加或者删除功能,而对于原对象来说是透明的,即原对象是原创 2021-09-15 09:54:18 · 128 阅读 · 0 评论 -
设计模式之代理模式
一 Proxy 代理 代理:字面上讲,在别人的授权范围内,代别人处理。也就是说,不直接和你要访问的人或者对象打交道,而是和他的代理人或者代理对象打交道。比如说常见的代理服务器和微商代理。用代理服务器举例,你访问代理服务器,代理服务器再从真实服务器获取数据或者资源返给你。这期间,你是不知道代理服务器背后的真实服务器的,所以你也不会真实服务器进行交互。这样做的好处有利于保护真实服务器的安全。 代理模式:为真实对象提供一个代理,然后外部通过访问代理对象,从而实现对真实对象的访问。 代理分类...原创 2021-09-15 07:54:16 · 137 阅读 · 0 评论 -
设计模式之模板方法模式
一 模式背景 有时候,我们可能会遇到这么一种情况,不同的场景下,执行的业务算法的流程或者是骨架是一样的,但是在这些算法中,有一些是可以复用的,而且扩展起来也不是很方便。 二 模板方法模式 2.1 什么是模板方法模式 模板方法模式:固定算法骨架(流程),将一些步骤延迟到子类实现。这样既方便扩展,而且我们可以将一些公共的算法、提取出来。 2.2 优缺点 优点: 1 可以封装不变部分,扩展可变部分 2 提取出公共部分代码,便于维护,也避免代码重复 缺点: 算法骨架如果要修改,则原创 2021-09-14 21:53:23 · 102 阅读 · 0 评论 -
设计模式之单例模式
一 单例模式 1.1 单例模式 单例模式:保证一个类在全局只有一个实例,并对外提供一个访问接口。 1.2 使用场景 1 需要统计全局数据 2 创建一个对象需要耗费资源过多,比如IO或者数据库资源 3 一般工具类都会单例模式 二 优点和缺点 优点: 内存只有一个或者极少实例,减少了频繁创建对象的开销,节省内存等资源,有利于提升性能 缺点: 单例模式扩展比较困难,一般都需要修改代码 三 代码实例 单例模式的七种实现方式: 3.1饥汉式 public class S原创 2021-09-13 23:10:32 · 102 阅读 · 0 评论 -
设计模式之工厂模式
一 简单工厂(静态工厂) 1.1 什么是简单工厂 就是一个可以根据客户端或者配置文件提供参数,从而选择创建不同对象的工厂模式。本质在于选择不同产品的实现。 特点: 不符合开闭原则;简单 场景: 适合明确知道未来产品类型很少变化的场景,平常使用的较多。 一般简单工厂我们都不需要实例化,我们可以把它实现成工具类,直接使用静态方法,所以简单工厂的方法通常都是静态的,也被称为静态工厂。 1.2 代码示例 public interface CPU { public void des...原创 2021-09-13 23:05:51 · 201 阅读 · 0 评论