设计模式
文章平均质量分 52
闻道☞
学习是最好的修行
展开
-
Spring之AOP,DI,IOC和AspectJ
目录 1.DI(依赖注入),IOC(控制反转) 2.AOP 2.1 JAVA 代理实现 3.AspectJ 依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程...原创 2018-01-05 13:38:27 · 426 阅读 · 0 评论 -
原型模式(十)
原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式的通用类图 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java提供了一个Cloneable接口来标示这个对象是可拷贝的,为什么说是“标示”呢?翻开JDK的帮助看看Cloneable是一个方法都没有的,这个接口只是一个标记作用,在JVM中具有这个标记的原创 2018-01-09 20:58:52 · 230 阅读 · 0 评论 -
装饰器模式又叫包装器模式(十一)
装饰模式(Decorator Pattern) 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 装饰模式的通用类图 在类图中,有四个角色需要说明: ● Component抽象构件 Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象,如上面的成绩单。 注意 在装饰模式中,必然有一个最基本、原创 2018-01-09 21:24:13 · 4629 阅读 · 0 评论 -
策略模式(十二)
策略模式,也叫做政策模式(PolicyPattern)。 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。都实现是相同的接口,那当然可以相互转化了。 策略模式的通用类图 策略模式通用类图 策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,我们再来看看 策略模式的三个角色: ● Context封装角色 它也叫做上下文角色,起承原创 2018-01-09 21:50:38 · 366 阅读 · 0 评论 -
门面模式(十三)
门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下: 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生。 其通用类图 扩展后的系统类图 是的,类图就这么简原创 2018-01-10 09:54:12 · 192 阅读 · 0 评论 -
组合模式(十四)
组合模式(Composite Pattern)也叫合成模式,又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系,其定义如下: 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的通用类图, 我们先来说说组合模式的几个角色。 ● Component抽象构件角色 定原创 2018-01-10 20:21:09 · 272 阅读 · 0 评论 -
中介者模式(十五)
中介者模式 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式通用类图如图 从类图中看,中介者模式由以下几部分组成: ● Mediator 抽象中介者角色 抽象中介者角色定义统一的接口,用于各同事角色之间的通信。 ● Concrete M原创 2018-01-10 20:41:10 · 279 阅读 · 0 评论 -
命令模式(十六)
命令模式是一个高内聚的模式,其定义为: 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志, 可以提供命令的撤销和恢复功能。 命令模式的通用类图 在该类图中,我们看到三个角色: ● Receive接收者角色 该角色就是干活的角色,命令传递到这里是应该被执行的,具体到我们上面的例子中就是Group的三原创 2018-01-10 21:10:44 · 213 阅读 · 0 评论 -
享元模式(十七)
享元模式(Flyweight Pattern)是池技术的重要实现方式,其定义如下: 使用共享对象可有效地支持大量的细粒度的对象。 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么避免呢?就是享元模式提到的共享技术。我们先来了解一下对象的内部状态和外部状态。 要求细粒度对象,那么不可避免地使得原创 2018-01-11 15:15:45 · 162 阅读 · 0 评论 -
桥梁模式(十八)
桥梁模式(Bridge Pattern) 也叫做桥接模式, 是一个比较简单的模式, 其定义如下: 将抽象和实现解耦, 使得两者可以独立地变化。 桥梁模式的重点是在“解耦”上, 如何让它们两者解耦是我们要了解的重点, 我们先来看桥梁模式的通用类, 如图。 桥梁模式通用类图 我们先来看桥梁模式中的4个角色。 ● Abstraction——抽象化角色 它的主要职责原创 2018-01-24 15:00:08 · 238 阅读 · 0 评论 -
状态模式(十九)
状态模式是一种行为设计模式。适用于当对象的内在状态改变它自身的行为时。 如果想基于对象的状态来改变自身的行为,通常利用对象的状态变量及if-else条件子句来扮演针对对象的不同行为。状态模式Context(环境)和State(状态)分离的方式既保证状态与行为的联动变化,又使得这种变化是条理明晰且松耦合的。 状态模式的核心是封装, 状态的变更引起了行为的变更, 从外部看起来就好像这个对象 对应的类...原创 2018-02-07 16:03:55 · 161 阅读 · 0 评论 -
委派模式(二十)
委派模式(Delegate)是面向对象设计模式中常用的一种模式。不属于23中设计模式,在springMvc中的DispatcherServlet有应用。 角色: 1.委派人-(经理) 2.受托人-(员工) 类图: 实例代码: 委派人 package com.dz.test; /** * 被委派者-员工接口 * * @author alen * @create ...原创 2018-11-02 10:27:21 · 178 阅读 · 0 评论 -
Mybatis使用的设计模式
一、装饰模式 最明显的就是cache包下面的实现 Cahe、LoggingCache、LruCache、TransactionalCahe...等 以LoggingCache为例,UML图 Cache cache = new LoggingCache(new PerpetualCache("cacheid")); 一层层包装就使得默认cache实现PerpetualCache具有...转载 2019-02-10 18:36:30 · 315 阅读 · 0 评论 -
建造者模式(九)
建造者模式(Builder Pattern)也叫做生成器模式, 其定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的通用类图如图11-4所示。 在建造者模式中,有如下4个角色: ● Product产品类 通常是实现了模板方法模式,也就是有模板方法和基本方法, ● Builder抽象建造者原创 2018-01-09 14:49:27 · 161 阅读 · 0 评论 -
责任链模式(八)
原文 http://www.cnblogs.com/draem0507/p/3784130.html 在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请...转载 2017-04-29 18:25:36 · 271 阅读 · 0 评论 -
观察者模式(七)
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 通俗理解:许多对象(观察者)对另一个对象(被观察者--主题)的状态比较关心,这个对象状态更新,所有观察者也要改变或是知道,观察者设计模式大概来做这件事的 观察者模式定转载 2017-04-21 16:15:49 · 399 阅读 · 0 评论 -
spring中的设计模式
spring中的设计模式 应该说设计模式是我们在写代码时候的一种被承认的较好的模式,就像一种宗教信仰一样,大多数人承认的时候,你就要跟随,如果你想当一个社会存在的话。好的设计模式就像是给代码造了一个很好的骨架,在这个骨架里,你可以知道心在哪里,肺在哪里,因为大多数人都认识这样的骨架,就有了很好的传播性。这是从易读和易传播来感知设计模式的好处。当然设计模式本身更重要的是设计原则原创 2017-04-21 16:17:02 · 667 阅读 · 0 评论 -
Java中抽象继承(模板模式)
1. 抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。 抽象类和接口之间的一个主要差别是:类可以实现无限个接口, 但仅能从一个抽象(或任何其他类型)类继承(一个类只能继承一个抽象类)。从抽象类派生的类仍可实现接口。 2. 用abstract修饰的类称为抽象类,所谓抽象类是指不能直接实例化对象的类。如果一个抽象类被说明了,则这个类中将包含一个或几个抽象方原创 2016-12-30 11:55:03 · 1347 阅读 · 0 评论 -
JAVA设计模式之(简单工厂模式+工厂方法模式+抽象工厂模式) (一)
原文:http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例...转载 2017-03-18 21:38:29 · 1531 阅读 · 0 评论 -
单例模式(二)
一、什么是单例模式 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。 其实,GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。 二、为什么要使用单例模式呢? 在应用系统开发中,我们常常有以下需求: - 在多个线程之间,比如servlet环境,共享同...原创 2017-03-18 21:54:10 · 383 阅读 · 0 评论 -
代理模式(三)
原文:https://www.cnblogs.com/qifengshi/p/6566752.html Java设计模式之代理模式 代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。 为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难转载 2017-04-14 17:15:08 · 389 阅读 · 0 评论 -
动态代理模式之JDk动态代理(四)
原文:http://haolloyin.blog.51cto.com/1177454/333257/ 动态代理(DynamicProxy):相比前一篇文章所实现的静态代理,动态代理具有更强的灵活性,因为它不用在我们设计实现的时候就指定某一个代理类来代理哪一个被代理对象,我们可以把这种指定延迟到程序运行时由JVM来实现。 我们知道,所谓代理,就是需要代理类和被代理类有转载 2017-04-14 17:50:15 · 373 阅读 · 0 评论 -
动态代理之cglib动态代理(五)
cglib动态代理实现 Cglib是一个优秀的动态代理框架,它的底层使用ASM在内存中动态的生成被代理类的子类,使用CGLIB即使代理类没有实现任何接口也可以实现动态代理功能。CGLIB具有简单易用,它的运行速度要远远快于JDK的Proxy动态代理: Cglib动态代理 JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,cglib是针对类来实原创 2017-04-21 10:55:15 · 799 阅读 · 0 评论 -
适配器模式(六)
1. 适配器模式简介(就是把接口或类通过别的类继承或别的方法包装,使别的新类有新的功能,达到客户要求)适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。适用场景:1、已经存在的类的接口不符合我们的需求;2、创...转载 2017-04-21 13:31:28 · 450 阅读 · 0 评论 -
java基础知识学习之代理深入学习(用动态代理实现AOP,FacotryBean)
1.代理的概念与作用程序中的代理能为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等;编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码。(参看下页的原理图)如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置是使用目标类、还是代理类,这样以后...原创 2017-04-23 15:42:52 · 393 阅读 · 0 评论 -
Java 23种设计模式
总体来说设计模式分为三大类: 创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),...转载 2017-07-29 13:17:18 · 1885 阅读 · 0 评论