![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 68
best c
学以致用,吹毛求疵
展开
-
二十三种设计模式之装饰器模式
上一篇文章我们一起探讨了代理模式,其主要目的是给目标类增强功能(没看的欢迎前往学习一下),属于结构型设计模式。今天给大家带来的是装饰器模式,它同样也是结构型设计模式,并且和代理模式在功能上有很多相通之处。装饰器模式顾名思义,指的是为一个基础类进行装饰,能够在程序运行时动态的为目标类增强功能,实现了比继承更为弹性的增强功能的作用。装饰器模式最重要第一个点就是这些类都是同根同源的,待会详见代码。装饰器模式的主要角色有:抽象组件、具体组件(被装饰加强的类)、抽象装饰器和具体装饰器(可看作一个个原创 2021-04-13 18:24:13 · 130 阅读 · 0 评论 -
二十三种设计模式之代理模式
今天来一起探讨下GOF二十三种设计模式的代理模式。代理模式是一种结构型设计模式,也是设计模式中较为重要的一种,原因在于代理模式(动态代理)可以自动帮我们的类增强功能,并且很多框架底层大量使用了代理模式,例如Spring的AOP等。在讲代理模式前,我有必要提一下代理和委托。相信大家看了很多网上代理模式的博客都会拿中介,黄牛买票作为例子吧。其实,房屋中介严格意义来讲不属于代理。上面是来自法律快车对于代理和委派的区别,指出了代理和委派的根本区别是是否对客户是透明的。举个例子,大家用黄牛买票的时原创 2021-04-08 18:11:53 · 89 阅读 · 1 评论 -
二十三种设计模式之建造者模式
今天来分析一下GOF二十三种设计模式的建造者模式,建造者模式也是一种创建型设计模式。建造者模式可以简化我们创建复杂对象的过程,客户端可以根据自己的需要去构建一个所需对象。建造模式大概有两种写法,第一种是严格要求构建对象的顺序的;第二种是客户端根据需要自由搭配。我们先来看下第一种写法的UML图可以看到第一种写法的建造模式有4个主要角色1.具体建造的对象 2.建造对象所对应的构建者 3.抽象的构建者 4. 指挥者可以理解为,一个盖房子的流程,首先需要地基,有了地基才能砌砖垒瓦,等..原创 2021-03-30 16:26:22 · 148 阅读 · 0 评论 -
二十三种设计模式之原型模式
今天继续探讨GOF二十三种设计模式的原型模式,原型模式也是属于创建型模式的一种原型模式通俗的讲就是对象复制的过程,即通过一个原型对象,我可以得到一个该对象的克隆。下面来看下原型模式的第一种写法--JDK原生的public interface IClon<T>{ T clone();}public class Shall implements IClon<Shall>,Cloneable { private String name; pri原创 2021-03-26 18:14:56 · 117 阅读 · 0 评论 -
二十三种设计模式之单例模式(二)
上篇文章介绍了基本的单例模式,也是大家听说比较多的单例模式写法,这几种单例模式每个都有自己的问题,比如看似完美的静态内部类单例写法也会被反射所破坏;当然我们是有解决方案的,比如 private SingleInnerClassInstance() { if (InnerSingleInstance.instance != null) { throw new RuntimeException("非法创建"); } }我在构造方法加上原创 2021-03-22 18:57:51 · 43 阅读 · 0 评论 -
二十三种设计模式之单例模式(一)
所有的单例模式大致可以归为5类,除了注册式外,其他几类实现方式步骤大致为构造方法私有,提供私有静态变量,提供全局访问点。下面会对这五类单例实现具体分析其优缺点一、饿汉式类加载的时候就实例化对象优点:程序的效率比较高缺点:当有大量类时会占用较大内存,是典型的空间换时间的做法。二、懒汉式三、注册式四、容器式五、ThreadLocal式...原创 2021-03-19 10:21:41 · 60 阅读 · 0 评论 -
二十三种设计模式之工厂模式浅析
二十三种设计模式之工厂模式浅析今天来谈谈GOF二十三种设计模式之一的工厂模式,工厂模式是一种创建型模式,使用工厂模式可以使得用户快速获取对象,达到复用代码、简化开发的作用。同时工厂模式是遵循开闭原则的一、静态工厂 静态工厂又叫简单工厂,犹如其名是最简单的工厂模式。创建一个工厂类,该类负责实现复杂的创建对象的逻辑,用户提供一个标识参数即可拿到这个对象。public class CourseFactory { public ICourse createCourse(Clas...原创 2021-03-18 10:43:08 · 148 阅读 · 3 评论