设计模式
菜鸟哆哆
USTC小硕,欢迎你的关注。
展开
-
Singleton 单例模式学习笔记
一、什么是单例模式 单例设计模式指的是某个类保持只存在一个实例化对象。本文介绍的单例模式包括:懒汉模式、懒汉模式、双重锁单例模式、内部类模式、静态代码块模式、枚举单例模式。 代码实现:见我的github:单例设计模式 二、存在场景 1)网站的计数器 2)数据库连接池 3)Windows的Task Manager(任务...原创 2018-04-23 21:59:43 · 429 阅读 · 0 评论 -
Observer 观察者模式学习笔记
一、什么是观察者模式 被观察者发生改变时,通知观察者。 代码实现:见我的github:观察者模式学习笔记 二、存在场景 ATM:你到ATM 机器上取钱,多次输错密码,卡就会被ATM吞掉,吞卡动作发生的时候,会触发哪些事件呢?第一摄像头连续快拍,第二,通知监控系统,吞卡发生;第三,初始化ATM 机屏幕,返回最初状态。你不能因为就吞了一张卡,整个ATM...原创 2018-09-22 10:53:18 · 313 阅读 · 0 评论 -
Template 模板模式学习笔记
一、什么是模板模式 二、存在场景 三、设计思路 四、代码实现 见我的github:模板模式学习笔记 五、参考博客原创 2018-08-15 22:04:21 · 244 阅读 · 0 评论 -
Prototype 原型模式学习笔记
一、什么是原型模式 二、存在场景 三、设计思路 四、代码实现 见我的github:原型模式学习笔记 五、参考博客原创 2018-08-15 22:02:07 · 196 阅读 · 0 评论 -
Delegate 委派模式学习笔记
一、什么是委派模式 二、存在场景 三、设计思路 四、代码实现 见我的github:委派模式学习笔记 五、参考博客原创 2018-08-15 22:01:37 · 464 阅读 · 1 评论 -
Adapter 适配器模式学习笔记
一、什么是适配器模式 适配器模式是一种结构型设计模式。适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 代码实现:见我的github:适配器模式 二、存在场景:公司新旧系统合并。 三、设计思路 1.两个不同类(以及各自的接口):类A和类B,需要用类B来适配类A。 ...原创 2018-08-15 22:01:04 · 174 阅读 · 0 评论 -
Factory 工厂模式学习笔记
一、什么是工厂模式 工厂模式分为三种:简单工厂、工厂模式、抽象工厂。 简单工厂:代替了new操作,由工厂返回对象。 工厂模式:工厂模式模式是对简单工厂模式进一步的解耦,因为在工厂方法模式中是一个子类对应一个工厂类,而这些工厂类都实现于一个抽象接口。 抽象工厂:不再依赖接口,通过反射实现返回任意类的实例。 代码实现:见我...原创 2018-08-15 22:00:32 · 267 阅读 · 0 评论 -
Strategy 策略模式学习笔记
一、什么是策略模式 定义一个策略接口,封装若干该接口的实现策略,和一个实现容器,用户随取随用。 代码实现:见我的github:策略模式学习笔记 二、存在场景 支付方式 三、设计思路 策略接口 实现策略 实现容器 用户 ...原创 2018-07-29 10:34:33 · 352 阅读 · 0 评论 -
UML各种图以及继承、实现、依赖、关联、聚合、组合的联系与区别
一、名词解释 1)继承、实现:类A继承于类B,那么A就有了B的属性和方法,类A实现了B接口,B接口本身只是规则和方法的定义,类A具体实现了。 2)依赖、关联:类A当中某个方法需要类B作为参数传入,这种关系叫做依赖,但是只要当类A调用这个方法,才需要类B,就像人和高铁,人和轮船,具有临时性。类B(或者类B的全局变量)作为一个成员变量出现在类A的属性中,A、B俱生,...原创 2018-07-28 20:06:10 · 15963 阅读 · 1 评论 -
Proxy 代理模式学习笔记
一、什么是代理模式 代理模式就是一个代理类来控制访问另外一个对象,主要分三种:静态代理,动态代理,Cglib代理。 代码实现:见我的github:代理模式学习笔记 二、存在场景 1.远程代理:为一个对象在不同的地址空间提供局部代表,这样系统可以将Server部分的事项隐藏。 2.虚拟代理:使用一个代理对象表示一个十分耗资源的对象...原创 2018-07-28 19:46:19 · 414 阅读 · 0 评论 -
Visitor 访问者模式学习笔记
一、什么是访问者模式 访问者模式本质上解决的是多对多的关系。分离了数据结构和业务逻辑,是若干同类不相似的数据结构和其重载方法之间的多对多的对应关系。 例如:一个公司有若干职位,这些职位的工作有些相同有些不同。在这种多对多的关系中,一般采用多态和方法重载来解决。但是对于职位集合中若干不同的职位而言,方法重载无法对抽象出来的父类进行细分和识别,并进一步执行操作,这个时候...原创 2019-01-06 16:03:05 · 319 阅读 · 0 评论