设计模式
向日葵班学霸
努力变强
展开
-
设计模式十三:观察者模式
目录观察者模式代码示例观察者模式观察者模式(Observer Pattern)定义了对象之间一对多的依赖,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,它的所有观察者都会受到消息并作出更新,观察者模式属于行为型设计模式。观察者模式有时也被称为发布订阅模式。代码示例以消息通知为例,定义一个主题,也就是被观察者:public class Theme extends O...原创 2020-01-12 22:53:59 · 104 阅读 · 0 评论 -
设计模式十二:装饰者模式
目录装饰者模式代码示例装饰者模式装饰者模式(Decorator Pattern)是指在不改变原有对象的基础上,将功能附加到对象上,实现对原有对象功能的扩展,比继承更加灵活。装饰者模式属于结构型设计模式。装饰者模式的适用场景:1、用于扩展一个类的功能或给一个类添加附加功能2、动态的给一个类添加功能,同时这些功能可以动态的取消装饰者模式优点:1、比继承更加灵活,可以在不改变原有对象的基...原创 2020-01-12 21:41:31 · 128 阅读 · 0 评论 -
设计模式十一:适配器模式
目录适配器模式代码示例适配器模式适配器模式(Adapter Pattern)是指将一个类的接口转换为客所期望的另一个接口,使原来不兼容的接口类可以一块工作,属于结构型设计模式。适配器模式适用的业务场景:1、类已经存在,但是它的方法和需求不匹配(方法和结果相似或相同);2、随着产品的维护,由于不同产品或者商家造成功能类似但是接口不同的情况而采取的方案适配器模式优点:1、提高类的透明性...原创 2020-01-12 20:56:38 · 144 阅读 · 0 评论 -
设计模式十:模板模式
目录模板模式代码示例模板模式模板模式通常又被称为模板方法模式(Template Method Pattern),是指定义一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板模式属于行为型设计模式。模板模式使用场景:一次性实现一个算法不变的部分,并将可变的行为留给子类来实现;子类中公共的行为被提取出来,并集中到一个公共的父类,避免了代码的重复。模板模式优点:提高代码的复用性和扩展性,符...原创 2020-01-12 17:25:38 · 212 阅读 · 0 评论 -
设计模式九:策略模式
目录策略模式代码示例策略模式策略模式(Strategy Pattern)是指定义了算法家族,分别封装起来,让它们之间可以相互替换。此模式让算法的变化不会影响到使用算法的用户。策略模式可以避免多分支的if…else…和switch语句策略模式的使用场景:一个系统需要动态的从几个算法中选择一种;或者一个系统中有很多类,而他们之间的区别仅仅在于行为不同。策略模式优点:符合开闭原则、避免大量的i...原创 2020-01-12 16:28:52 · 176 阅读 · 0 评论 -
设计模式八:委派模式
目录委派模式委派模式委派模式(Delegate Pattern)的基本作用就是负责任务的调度和分配,委派模式和代理模式很相似,委派模式可以看做是一种特殊情况下的静态代理的全权代理,但是,代理模式注重的是过程,委派模式注重的是结果,委派模式属于行为型模式。委派模式在Spring中应用十分广泛,比如DispatcherServlet就用到了委派模式,现在以生活中的实际场景为例,比如boss给l...原创 2020-01-12 14:48:05 · 151 阅读 · 0 评论 -
设计模式七:动态代理
目录动态代理JDK实现方式CGLib实现方式JDK和CGLib动态代理动态代理的思想其实是和静态代理是一致的,不过,动态代理的功能更加强大。随着业务的扩展,动态代理的适应性更强。动态代理有JDK和CGLib两种实现方式,我们分别来看一下:JDK实现方式还是以找对象为例,这次不是定义父母类,而是定义一个专业的婚介(媒婆):public class JDKMeiPo implemen...原创 2020-01-12 13:53:21 · 117 阅读 · 0 评论 -
设计模式六:静态代理
目录代理模式静态代理代理模式代理模式是指为其他对象提供一种代理,以控制对这个对象的访问,代理对象在客户端和目标对象之间起到了中介的作用,代理模式属于结构型设计模式,起到了对目标对象的保护和增强的作用。静态代理以当前社会状况为例,很多人都到了适婚年龄但是还不找对象,所以父母就展开行动为自己的子女寻找合适的对象,那么这个过程中,父母就可以看作是对子女的一种代理,代码如下:首先定义一个P...原创 2020-01-12 10:36:30 · 121 阅读 · 0 评论 -
设计模式五:原型模式
目录原型模式浅克隆深克隆原型模式原型模式是指:原型实例制定穿件对象的种类,并且通过拷贝这些原型创建新的对象。原型模式的适用场景:1、类初始化消耗资源较多2、new产生一个对象需要非常繁琐的过程(访问权限、数据准备等)3、构造函数比较复杂4、循环体中产生大量对象时浅克隆先写一个简单的示例,这里通过实现Cloneable的方式,代码如下,先创建一个实体类作为原型:@Gett...原创 2020-01-12 09:59:12 · 171 阅读 · 0 评论 -
设计模式四:单例模式
目录概述:1、饿汉式单例1.1、饿汉式单例2、懒汉式单例2.1、懒汉式单例2.2、双重校验锁2.3、静态内部类3、注册式单例3.1、枚举4、反射破坏单例4.1、反射破坏单例5、序列化破坏单例5.1、序列化破坏单例概述:单例模式是指确保任何一个类在任何情况下都绝对只有一个实例对象,拥有私有的构造方法,并提供一个全局访问点,主要适用场景:ServletContext、ServletConfig、...原创 2020-01-05 18:17:06 · 148 阅读 · 0 评论 -
设计模式三:工厂模式
目录1、简单工厂模式2.工厂方法模式3.抽象工厂方法1、简单工厂模式简单工厂就像它自己的名字一样,逻辑比较简单,类的创建和使用是分开的,我们以生产牛奶为例,首先创建一个牛奶的接口:public interface IMilk { void productMilk();}我们需要苹果味的牛奶,那么就创建一个苹果牛奶的类:public class AppleMilk i...原创 2020-01-02 22:00:16 · 122 阅读 · 0 评论 -
设计模式二:七大设计原则(下)
目录4.接口隔离原则4.接口隔离原则原创 2020-01-02 21:10:24 · 152 阅读 · 1 评论 -
设计模式一:七大设计原则(上)
为何要有设计模式,其实就是对前人代码经验的一种总结。七大设计原则包括:开闭原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则、里氏替换原则、合成复用原则。1、开闭原则开闭原则(Open-Closed Principle,OCP)是指一个软件实体(比如类、模块、函数等)对外界扩展开放,对于自身的修改关闭。顾名思义,开闭针对的是扩展和修改两个行为。重点思想是使用抽象构建框架,使用实现扩...原创 2020-01-01 23:39:47 · 184 阅读 · 0 评论