Java与设计模式
文章平均质量分 89
绯青
给时光以生命
展开
-
Spring 实践 -AOP
Spring 实践标签: Java与设计模式AOP引介AOP(Aspect Oriented Programing)面向切面编程采用横向抽取机制,以取代传统的纵向继承体系的重复性代码(如性能监控/事务管理/安全检查/缓存实现等). 横向抽取代码复用: 基于代理技术,在不修改原来代码的前提下,对原有方法进行增强.Spring AOP 历史1.2开始, Spring开始支持AOP技术(Sprin原创 2016-03-07 08:32:50 · 5629 阅读 · 1 评论 -
命令模式
在对象的结构和创建问题都解决了之后,就剩下对象的行为问题了: 如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高. 行为型模式共有11个可供研究,它们分别是:命令模式、解释器模式、访问者模式、模板方法模式、观察者模式、状态模式、策略模式、责任链模式、中介者模式、备忘录模式、迭代器模式.正文- 命令模式原创 2016-10-10 07:28:10 · 5650 阅读 · 2 评论 -
模板方法模式
定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变一个算法的结构的前提下重定义该算法的某些特定步骤. 处理某个流程的骨架代码已经具备, 但其中某节点的具体实现暂不确定, 此时可采用模板方法, 将该节点的代码实现转移给子类完成.原创 2016-10-16 16:18:54 · 4045 阅读 · 2 评论 -
工厂模式
工厂模式标签: Java与设计模式 工厂模式 用工厂方法代替了new操作, 将选择实现类, 创建对象统一管理和控制.从而将调用者(Client)与实现类进行解耦.实现了创建者与调用者分离;使用场景 JDK中Calendar的getInstance方法;JDBC中Connection对象的获取;MyBatis中SqlSessionFactory创建SqlSession;SpringI原创 2015-12-13 14:15:44 · 4600 阅读 · 10 评论 -
状态模式
允许一个对象在其内部状态改变时改变其行为, 其对象看起来像是改变了其类. 解决系统中复杂对象的状态流转以及不同状态下的行为封装问题.(来源: 设计模式:可复用面向对象软件的基础)原创 2016-11-25 19:08:30 · 4320 阅读 · 3 评论 -
策略模式
Java与设计模式: 定义一系列的算法, 将其一个个封装起来, 并使它们可相互替换, 使得算法可独立于使用它的客户而变化. 策略模式对应于解决某一问题的一个算法族, 允许用户从该算法族中任选一个算法解决该问题, 同时可以方便的更换算法或者增加新的算法. 并由客户端决定调用哪个算法. 核心: 分离算法, 选择实现原创 2016-12-09 18:47:02 · 3194 阅读 · 3 评论 -
责任链模式
责任链模式将能够处理某一类请求的对象串成一条链, 请求沿链传递, 链上的对象逐个判断是否有能力处理该请求. 使多个对象都有机会处理请求, 从而避免请求发送者和接收者之间的耦合关系. 优势: 发出请求的客户端并不知道链上的哪个对象最终处理该请求, 这使得系统可以在不影响客户端的前原创 2016-12-23 21:57:16 · 2707 阅读 · 6 评论 -
备忘录模式
备忘录模式标签 : Java与设计模式 备忘录模式: 在不破坏封装性的前提下, 捕获一个对象的内部状态( or 拷贝), 并在该对象之外保存这个状态, 这样以后就可 将该对象恢复到原先保存的状态. (图片来源: 设计模式: 可复用面向对象软件的基础) 将保存细节封装在Memento中, 后面即使修改了保存细节也不会影响客户端.模式实现案例: 游戏进度保存在攻击Boss前,原创 2017-02-17 14:34:09 · 3028 阅读 · 2 评论 -
单例模式
static, enum, 内部类与单例模式标签: Java与设计模式Java static与初始化块拾忆 static关键字的作用是把类的成员变成类相关,而不是实例相关.普通初始化块 当Java创建一个对象时, 系统先为对象的所有实例变量分配内存(前提是该类已经被加载过了), 然后开始对这些实例变量进行初始化, 顺序是: 先执行初始化块或声明实例变量时指定的初始值(这两处执行的顺序与他们在原创 2015-12-09 14:26:01 · 5018 阅读 · 5 评论 -
迭代器模式
迭代器模式: 提供一种方法顺序访问聚合对象(如List、Set)内的每个元素, 而又不暴露聚合对象的内部实现. - 可复用面向对象软件的基础原创 2017-02-23 13:20:04 · 5363 阅读 · 1 评论 -
享元模式
享元模式标签 : Java与设计模式 内存属于稀缺资源, 不能随便浪费. 如果有很多相同/相似的对象, 我们可以通过享元节省内存.内部状态 vs. 外部状态 享元模式(Flyweight): 运用共享技术有效地重用大量细粒度的对象.享元对象能做到共享的关键是区分了内部状态和外部状态: 在享元对象内部并且不会随环境改变而改变的共享部分, 可称之为享元对象的内部状态.而随环境改变而改变原创 2016-09-20 07:47:07 · 5300 阅读 · 3 评论 -
原型模式
原型模式标签: Java与设计模式 原型模式 用原型实例指定创建对象的种类, 并通过拷贝这些原型创建新的对象.原型模式就是通过一个对象再创建另一个可定制的对象, 而且不需要知道任何创建的细节. 因此, 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆原创 2015-12-20 17:38:55 · 2341 阅读 · 3 评论 -
代理模式
代理模式标签: Java与设计模式代理模式 为其他对象提供一种代理以控制对这个对象的访问(可以详细控制访问某个对象的方法, 在调用这个方法[前/后]做[前/后]置处理, 从而实现将统一流程放到代理类中处理).我们书写执行一个功能的函数时, 经常需要在其中写入与功能不是直接相关但很有必要的代码(如日志记录,事务支持等);这些枝节性代码虽然是必要的,但它会带来以下麻烦:枝节性代码游离在功能性代码之外原创 2015-12-27 11:27:12 · 4699 阅读 · 12 评论 -
Spring 实践 -IoC
Spring 实践标签: Java与设计模式Spring简介 Spring是分层的JavaSE/EE Full-Stack轻量级开源框架.以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核, 取代EJB的臃肿/低效/脱离现实. 主页http://spring.io/ IoC与DIIOC:原创 2016-03-09 07:43:58 · 4928 阅读 · 2 评论 -
Spring 实践 -拾遗
Spring 实践标签: Java与设计模式Junit集成前面多次用到@RunWith与@ContextConfiguration,在测试类添加这两个注解,程序就会自动加载Spring配置并初始化Spring容器,方便Junit与Spring集成测试.使用这个功能需要在pom.xml中添加如下依赖:pom.xml<dependency> <groupId>org.springframew原创 2016-03-12 08:52:13 · 5441 阅读 · 3 评论 -
建造者模式
建造者模式: 又称生成器模式, 可以将一个产品的内部表象与产品的生成过程分割开来, 从而可以使一个建造过程生成具有不同的内部表象的产品(将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示). 这样用户只需指定需要建造的类型就可以得到具体产品,而不需要了解具体的建造过程和细节.原创 2015-12-20 17:43:31 · 2881 阅读 · 8 评论 -
中介者模式
中介者模式标签 : Java与设计模式面向对象设计鼓励将行为分布到各个对象中, 这种分布可能会导致对象间有许多连接. 在最坏的情况下, 每一个对象都需要知道其他所有对象. 虽然将一个系统分割成许多对象可增强可复用性, 但是对象间相互连接的激增又会降低其可复用性. 大量的连接关系使得一个对象不可能在没有其他对象的协助下工作(系统表现为一个不可分割的整体), 此时再对系统行为进行任何较大改动就十分困原创 2016-08-29 09:07:46 · 2919 阅读 · 4 评论 -
组合模式
组合模式标签 : Java与设计模式 组合模式: 将对象组合成树形结构以表示‘部分-整体’的层次结构, 使得用户对单个对象和组合对象的使用具有一致性.解析 组合模式描述了如何将容器和叶子节点进行递归组合, 使用户在使用时可一致的对待容器和叶子, 为处理树形结构提供了完美的解决方案.当容器对象的指定方法被调用时, 将遍历整个树形结构, 并执行调用. 整个过程递归处理. (图片来源: 设计原创 2016-09-02 06:18:25 · 2294 阅读 · 1 评论 -
外观模式
外观模式标签 : Java与设计模式 外观模式: 又称门面模式: 外观Facade为子系统的一组接口提供一个一致界面,使得这组子系统易于使用(通过引入一个新的外观角色降低原系统复杂度,同时降低客户类与子系统的耦合度). 图片来源: 设计模式: 可复用面向对象软件的基础.实现案例需求: 租房有过自己找房租房经历的同学能够体会得到找房是件很痛苦的事, 不光要挨个小区跑而且还要跟(二原创 2016-09-03 06:53:14 · 4407 阅读 · 2 评论 -
桥接模式
桥接模式标签: Java与设计模式场景在商城系统中商品是分类摆放的,以电脑为例我们有以下商品分类, 该如何良好的处理商品分类销售的问题: 直观上我们会认为该商品分类以继承来实现:电脑作为根类,台式机/笔记本/平板电脑作为其子类,联想台式机/…作为电脑的孙类.(其继承结构可以从图上直观的看出),但是考虑以下需求:如果我们要增加一个品牌三星?如果我们要增加一个分类智能手机?问题1的解决方案是在台原创 2016-01-10 09:48:59 · 2599 阅读 · 1 评论 -
适配器模式
适配器模式标签: Java与设计模式结构型模式 在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低; 结构型模式共有7个可供研究,它们分别是: 适配器模式, 代理模式, 桥接模式, 装饰者模式, 组合模式, 外观模式, 享元原创 2015-12-25 20:07:53 · 2513 阅读 · 2 评论 -
装饰者模式
装饰者模式(Decorator): 又称包装器(Wrapper), 可以动态地为一个对象添加一些额外的职责. 就增加功能来说, 装饰者模式是一种用于替代继承的技术, 他无须通过增加子类继承就能扩展对象的已有功能, 而是使用对象的关联关系代替继承关系 , 更加灵活, 同时还可避免类型体系的快速膨胀.原创 2016-08-28 08:17:52 · 3024 阅读 · 2 评论