摘要: 一、架构说明: 二、为什么使用线程池,优势是什么? 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,那么超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 特点:线程复用、控制最大并发数量、管理线程 优 阅读全文
posted @ 2019-08-15 23:01 与君共舞 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 一、List 1、代码演示 2、故障现象 java.util.ConcurrentModificationException 3、导致原因 一个线程正在写,另一线程过来抢夺,导致数据不一致,即并发修改导致的异常 4、解决方案 new Vector<>() Collections.synchroniz 阅读全文
posted @ 2019-08-15 22:59 与君共舞 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式的核心是clone方法,通过该方法进行对象的拷贝,java提供了一个Cloneable接口来标示这个对象是可拷贝的。 Prototype原型类:声明一个克隆自己的接口 ConcretePrototype具体的原型类:实现一个克 阅读全文
posted @ 2019-08-15 22:04 与君共舞 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 一、基本介绍 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时可以使用命令模式来设计。 命令模式将一个请求封装成一个对象,以便使用不同的参数来表示不同的请求,支持命令的撤销和恢复功能。 命令模式 阅读全文
posted @ 2019-08-15 22:04 与君共舞 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦。从而提高项目的扩展和维护性。 一、简单工厂模式 定义了一个创建对象的类,由这个类来封装实例化对象的行为代码。 由一个工厂对象决定创建出哪一种产品类的实例。 披萨项目需求:便于披萨种类的扩展,便于维护 方案:把创建Pi 阅读全文
posted @ 2019-08-15 22:03 与君共舞 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 为其他对象提供一种代理以控制对这个对象的访问。 被代理的对象可以是:远程对象、创建开销大的对象、需要安全控制的对象 Subject抽象主题角色:可以是抽象类也可以是接口 RealSubject具体主题角色:是业务逻辑的具体执行者。 Proxy代理角色:负责对真实角色的调用,把所有抽象主题类定义的方法 阅读全文
posted @ 2019-08-15 22:03 与君共舞 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 Target目标角色:定义把其他类转换为何种接口,也就是我们的期望接口 Adaptee源角色:是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。 Adap 阅读全文
posted @ 2019-08-15 22:02 与君共舞 阅读(186) 评论(0) 推荐(0) 编辑