设计模式
文章平均质量分 54
码生
所有的创新都起源于模仿。
展开
-
设计模式之单例模式
一、核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。二、优点:1、由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决;2、单例模式可以在系统设置全局的访问点,优化和共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。三、应用原创 2015-10-06 15:22:11 · 221 阅读 · 0 评论 -
设计模式之迭代器模式
1、核心 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。2、应用场景 JDK中内置迭代器(List/Set)3、结构 -聚合对象:存储数据 -迭代器:遍历数据 4、代码示例/** * 聚合接口 * @author ly1 * */public interface Aggregation { void add(Object o原创 2015-10-12 16:35:14 · 273 阅读 · 0 评论 -
设计模式之模板方法
1、核心 定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。2、应用场景 —数据库访问的封装 —Junit单元测试 —servlet中关于doGet/doPost方法调用 —Hibernate中模板程序 —spring中JDBCTemplate、HibernateTemplate等3原创 2015-10-13 10:22:58 · 272 阅读 · 0 评论 -
设计模式之享元模式
1、核心 -享元模式以共享的方式高效地支持大量细粒度对象的重用。 -享元对象能做到共享的关键是区分了内部状态和外部状态。 内部状态:可以共享,不会随环境变化而改变 外部状态:不可以共享,会随环境变化而改变 2、享元模式角色 -FlyWeightFactory享元工厂类:创建并管理享元对象,享元池一般设计成键值对。 -FlyWeight抽象享元类原创 2015-10-12 12:06:03 · 447 阅读 · 0 评论 -
设计模式之状态模式
1、核心 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。2、结构 —Context环境类:环境类中维护一个State对象,他是定义了当前的状态 —State抽象状态类 —ConcreteState具体状态类:每一个类封装了一个状态对应的行为 3、适用场景 一个对象的行为取决原创 2015-10-13 11:52:02 · 244 阅读 · 0 评论 -
设计模式之策略模式
1、核心 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。2、应用场景 JAVASE中GUI编程中,布局管理 Spring框架中,Resource接口,资源访问策略 javax.servlet.http.HttpServlet#service() 3、策略模式角色 —抽象策略角色: 策略类,通原创 2015-10-13 09:26:54 · 338 阅读 · 0 评论 -
设计模式之命令模式
1、核心 对命令进行封装,将发出命令的责任和执行命令的责任分割开。将“行为请求者”与“行为实现者”解耦。2、结构 —Command:定义命令的接口,声明执行的方法。 —ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 —Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能原创 2015-10-13 09:00:50 · 369 阅读 · 0 评论 -
设计模式之中介者模式
1、核心 -如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为“同事对象” -我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如下的星形结构 结构图: 2、本质 解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理原创 2015-10-12 21:10:18 · 389 阅读 · 0 评论 -
设计模式之观察者模式
1、核心 当一个对象(目标对象)的状态变化时,他需要及时告知一些列对象(观察者),令他们做出响应。将观察者和被观察的对象分离开。2、应用场景 —聊天室程序的服务器转发给所有客户端 —网络游戏(多人联机对战)场景中,服务器将客户端的状态进行分发 —邮件订阅 —Servlet中,监听器的实现 —Android中,广播机制 —JDK的AWT中事件处理模型基于观察者模原创 2015-10-13 14:54:19 · 302 阅读 · 0 评论 -
设计模式之责任链模式
1、核心 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。2、应用场景 -Java中,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个catch -Javascript语言中,事件的冒泡和捕获机制。(Java语言中,事件的处原创 2015-10-12 15:41:53 · 833 阅读 · 0 评论 -
设计模式之解释器模式、访问者模式
用的不多,做个标记,有时间回来补上。原创 2015-10-13 09:03:56 · 303 阅读 · 0 评论 -
设计模式之外观模式
1、核心 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 2、应用场景 -JDBC封装 -commons提供的DBUtils类 -Hibernate提供的工具类 Spring JDBC工具类3、适用场景 在以下情况下可以考虑使用外观模式: (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式原创 2015-10-11 19:04:23 · 361 阅读 · 0 评论 -
设计模式之建造者模式
1、核心本质: -分离了对象子组件的单独构造(有Builder来负责)和装配(有Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。 -由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。2、应用场景 -S原创 2015-10-08 21:43:06 · 277 阅读 · 0 评论 -
设计模式之工厂模式
1、核心本质:-实例化对象,用工厂方法代替new操作。-将选择实现类、创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。2、应用场景-JDK中Calendar的getInstance方法-JDBC中Connection对象的获取-Hibernate中SessionFactory创建Session-spring中IOC容器创建管理bean对象-XML解析时的DocumentBuild原创 2015-10-07 09:25:13 · 1088 阅读 · 0 评论 -
设计模式之适配器模式
1、核心: 将一个类的接口转换成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2、模式中的角色: -目标接口(Target):客户所期待的接口,目标可以是具体的或抽象的类也可以是接口。 -需要适配的类(Adaptee):需要适配的类或适配者类。 -适配器(Adapter):通过包装一个需要适配的对象,把原接口装换成目标接口。3、应用场景原创 2015-10-09 14:29:47 · 335 阅读 · 0 评论 -
设计模式之原型模式
1、核心本质: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2、应用场景: -通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。3、原型模式实现: -Cloneable接口和clone方法(不属于Cloneable接口,是Object类中的方法,通过override该方法实现拷贝) -Prototype模式中实现起来最困难的地方就是原创 2015-10-09 11:06:25 · 418 阅读 · 0 评论 -
设计模式之代理模式
1、核心: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。2、代理模式角色: 抽象角色:定义代理角色和真实角色的公共对外方法。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。关注真正的业务逻辑! 代理角色:实现抽象角色,是真实角色的代理,通过真实原创 2015-10-11 10:13:42 · 288 阅读 · 0 评论 -
设计模式之桥接模式
1、核心: 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。2、应用场景 -JDBC驱动程序 -AWT中的Peer架构 -银行日志管理: 格式分类:操作日志、交易日志、异常日志 距离分类:本地记录日志、异地记录日志 -人力资源系统中的奖金计算模块: 奖金分类:个人原创 2015-10-11 11:22:06 · 427 阅读 · 0 评论 -
设计模式之组合模式
1、核心 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。2、组合模式角色 抽象(Component)构件角色:定义了叶子和容器构件的共同点 叶子(Leaf)构件角色:无子节点 容器(Composite)构件角色:有容器特征,可以包含子节点 3、应用场景 -操作系统的资源管理器 -GUI中的容器层次图 -XML文原创 2015-10-11 15:00:42 · 325 阅读 · 0 评论 -
设计模式之装饰模式
1、核心 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2、应用场景 -IO中输入流和输出流的设计 -Swing包中图形界面构件功能 -Servlet API中提供了一个request对象的Decorator设计模式的默认实现类HttpServletRequestWrapper,HttpServletReq原创 2015-10-11 16:10:41 · 343 阅读 · 0 评论 -
设计模式之备忘录模式
1、核心 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。2、结构 —源发器类Originator:负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。 —备忘录类Memento:负责存储Originator对象的内部状态,并可以防止Origin原创 2015-10-13 16:38:27 · 297 阅读 · 0 评论