设计模式
文章平均质量分 84
zz_ddup
这个作者很懒,什么都没留下…
展开
-
装饰者模式
定义:装饰者模式:在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象上,从而实现动态拓展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。设计原则:要使用装饰者模式,需要满足以下设计原则: 1、多用组合,少用继承 2、开放-关闭原则:类应该对拓展开放,对修改关闭类UML图:一.抽象的被装饰者package com.zqr.design.decoratorPatter...原创 2018-06-21 22:18:57 · 91 阅读 · 0 评论 -
单例模式
单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局访问点。属于创建型模式。在 J2EE 标准中,ServletContext、 ServletContextConfig 等;在 Spring 框架应用中 ApplicationContext;数据库的连接 池也都是单例形式。一.饿汉式单例饿汉式单例是在类加载的时候就立即初始化,...原创 2019-05-09 16:02:20 · 84 阅读 · 0 评论 -
抽象工厂
抽象工厂模式(Abastract Factory Pattern)是指提供一个创建一系列相关或相互依赖对象的接口,无需指定他们具体的类。客户端(应用层)不依赖于产品类实例如何被创建、实现等细节,强调的是一系列相关的产品对象(属于同一产品族)一起使用创建对 象需要大量重复的代码。需要提供一个产品类的库,所有的产品以同样的接口出现,从 而使客户端不依赖于具体实现。相当于在工厂方法里新增...原创 2019-05-09 14:56:02 · 106 阅读 · 0 评论 -
简单工厂与工厂方法
一.简单工厂简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类 的实例,但它不属于 GOF,23 种设计模式。简单工厂适用 于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创 建对象的逻辑不需要关心。简单工厂也有它的缺点:工厂类的职责相对过重,不易于扩展过于复杂的产品结构上代码,先贴产品packa...原创 2019-05-09 14:29:35 · 157 阅读 · 0 评论 -
23种设计模式
创建型:用来构建对象以便能从实现系统解耦。1. Factory Method(工厂方法)简单工厂与工厂方法2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型:用不同的对象组成大规模的对象结构。6. Adapter Class/Object(适配器)...原创 2018-08-12 22:25:10 · 241 阅读 · 0 评论 -
观察者模式
定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。UML实现 1.观察者接口package com.zqr.design.observerPattern;/** * 观察者接口 * @C...原创 2018-06-28 18:57:06 · 93 阅读 · 0 评论 -
模板设计(templatePattern)模式
1. 模板设计模式在书中定义: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。2.模版方法模式的结构 模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现。模版方法:由抽象类声明并加以实现。一般来说,模版...原创 2018-06-28 11:39:10 · 136 阅读 · 0 评论 -
代理模式(proxyPattern)
定义 为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理模式可以在客户端与目标对象之间起到中介的作用。分类 1.静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 2.动态代理:在程序运行时,运用反射机制动态创建而程。UML...原创 2018-07-01 19:51:30 · 149 阅读 · 0 评论 -
策略模式(strategyPattern)
定义 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。设计原则 1.找出应用中需要变化之处,把它们独立出来,不需要和那些变化的代码混在一起 2.针对接口编程,而不是针对实现编程 3.多用组合,少用继承优点 1.策略模...原创 2018-06-29 18:24:32 · 179 阅读 · 0 评论 -
外观(Facade)模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。如何解决:客户端不与系统耦合,外观类与系统耦合。关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺...原创 2018-06-25 11:34:04 · 1170 阅读 · 0 评论 -
适配器设计模式
1)概述适配器模式是结构型设计模式之一,其在不修改原来两个模块代码的情况下,将两个不兼容的类融合在一起,有点像粘合剂,通过转换使得他们能够协作起来, 符合了开闭原则.2)定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配无法在一起工作的两个类可以在一起工作.3)使用场景系统需要使用现有的类,而此类接口不符合系统的需要,即接口不兼容想要建立一个可重复使用的类,用于关联...原创 2018-06-22 18:18:30 · 122 阅读 · 0 评论 -
设计模式之设计人生
1.在Java中,什么时候用重载,什么时候用重写?在设计过程中两者的运用以及对设计原则的掌握。重载是多态的一种实现和形式,在Java中主要是从代码应用层及用户调用者的角度来解决问题;也是追寻开闭原则。例:在spring中的getBean()方法,名字相同,意味着它的功能是相同的,但getBean有很多场景,可以传入BeanName,也可以传入BeanClass等,因为用户在使用时根据...原创 2019-05-20 15:32:00 · 333 阅读 · 0 评论