设计模式
文章平均质量分 65
zhaojianyin
runing
展开
-
设计模式
设计模式设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式的目的:使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型原创 2017-03-29 19:27:12 · 328 阅读 · 0 评论 -
设计模式之命令模式
设计模式之命令模式什么是命令模式:将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化,对请求排队或者记录请求日志,以及支持可撤销的操作,也称为Action模式,事务模式。结构:command抽象命令类ConcreteCommand具体命令类Invoker调用者:请求的发送者,它通过命令对象来执行请求。一个调用者并不需要设计时确定其接收者,因此他只与抽象命令类之间存在关联,在程序原创 2017-04-11 11:07:01 · 435 阅读 · 0 评论 -
设计模式之外观模式
设计模式之外观模式动机: 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦? 意图: 为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 适用性:为一个复杂子原创 2017-04-17 17:17:50 · 301 阅读 · 0 评论 -
设计模式之享元模式
设计模式之享元模式什么是享元模式:以共享的方式高效的支持大量的细粒度对象。通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗。享元模式由于其共享的特性,可以在任何池中操作,例如,线程池,数据库连接池。Strig 类的设计也是享元模式我们以下棋为例每个围棋的棋子都是一个对象,没个对象都有一些相同的属性:(这些称为内部状态可以共享)颜色大小形状不同的属性:(这些称为外部状态不可以共享)原创 2017-04-18 16:01:04 · 330 阅读 · 0 评论 -
设计模式之中介者模式
设计模式之中介者模式什么是中介者模式定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,从类图中看,共分为3部分:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的原创 2017-04-14 20:17:33 · 511 阅读 · 0 评论 -
设计模式之桥接模式
设计模式之桥接模式什么是桥接模式核心要点: 处理多层继承结构,处理多维度变化的场景,将各个维度设置成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。桥接模式可以用来取代多层继承的方案,多层继承违背单一职责原则,复用性较差,类的个数也非常多,桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 极大的提高了系统的可扩展性,在两个维度中任意扩展一个维度,都不需要修改原有的系统,否和原创 2017-04-19 15:18:12 · 418 阅读 · 0 评论 -
设计模式之组合模式
设计模式之组合模式使用组合模式的场景: 把部分和整体的关系用树状结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象核心:抽象构件角色:定义了叶子和容器构件的共同点叶子结点:无子节点容器构件角色:有容器的特性,可以包含子节点,组合模式怎么用我们一病毒查杀为例,练习一下组合模式public interface File { void kill();// 杀病毒}//原创 2017-04-20 10:09:08 · 616 阅读 · 0 评论 -
设计模式之装饰模式
设计模式之装饰模式什么是装饰模式动态的为一个对象添加新的功能 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展新的功能,使用对象的关联关系,代替继承关系,更加灵活,同时避免类型体系的快速膨胀 组成: Component(抽象构建类) concreteComponent(具体的抽象构建类) deocorator(装饰器) concretedeocorator(具体装饰器)装饰原创 2017-04-20 17:40:48 · 404 阅读 · 0 评论 -
设计模式之迭代器模式
设计模式之迭代器模式什么是迭代器模式提供一种可以遍历聚合对象的方式 聚合对象:存储函数 迭代器:遍历数据通常写成内部类,便于对变量的直接调用,以及对特定的聚合对象的遍历迭代器模式怎么用/** * 自定义的迭代器接口 */public interface MyIterator { void first(); void next(); boolean hasnext()原创 2017-04-17 16:27:34 · 343 阅读 · 0 评论 -
设计模式之责任链模式
设计模式之责任链模式什么是责任链模式(Chain of Responsibility)生活中的责任链模式:击鼓传花,申请折扣,公司层结构很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式涉及到的角色如下原创 2017-03-31 16:12:46 · 344 阅读 · 0 评论 -
设计模式之模板方法模式
设计模式之模板方法模式定义:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。角色:抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。应用 我们泡茶,冲咖啡,基本分为4个步骤。把水煮沸用水将料泡开倒入杯中假如调原创 2017-04-02 21:22:00 · 290 阅读 · 0 评论 -
设计模式之观察者模式
设计模式之观察者模式定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。角色:抽象被观察者角色:把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。 抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己。原创 2017-04-03 11:52:38 · 774 阅读 · 0 评论 -
设计模式之解释器模式与访问者模式
设计模式之解释器模式与访问者模式解释器模式:简介:是一种不常见的模式。用于描述 如何构成一个简单的解释器,主要用于使用那个面向对象语言开发和设计编译器和解释器设计。尽量不要使用解释器模式,后期维护会很麻烦,在项目中可以使用,jruby,java 的js引擎来代替解释器的作用,弥补java语言的不足。开发中常见的场景:EL表达式的处理。正则表达式的解释器。SQL语法的解释器。数学表达式原创 2017-04-10 09:48:54 · 323 阅读 · 0 评论 -
设计模式之单例模式
设计模式之单例模式1.简单介绍在程序开发过程中有些对象我们可能只需要一个比如:配置文件,工具类,线程池,缓存,日志对象等。如果创造出多个实例,就会导致许多问题,比如占用过多资源,资源不一致等。 保证整个对象只有一个。2.分类单例模式:懒汉模式,饿汉模式。饿汉模式:package Singleton;/** * 单例模式:只需要一个对象。 * * 作用:保证整个应用程序中某个实例只原创 2017-03-29 20:27:57 · 394 阅读 · 0 评论 -
设计模式之工厂模式
设计模式之工厂模式工厂模式:是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的原创 2017-03-30 20:31:06 · 381 阅读 · 0 评论 -
设计模式之适配器模式
设计模式之适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或适配者类。适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 模拟客户原创 2017-03-31 11:45:18 · 296 阅读 · 0 评论 -
设计模式之代理模式
设计模式之代理模式代理模式的概念: 给某一个对象提供一个代理,并由代理对象控制对原对象的引用。常见的代理:远程代理(为不同地理的对象提供局域网代表对象)虚拟代理(根据需要将一个资源消耗很大的对象进行延迟,真正需要的时候进行创建)保护代理(控制对一个对象的权限)智能引用代理(提供对目标对象额外的服务)静态代理: 代理和被代理对象在代理之前是确定的,原创 2017-03-31 10:54:10 · 419 阅读 · 0 评论 -
设计模式之状态模式
设计模式之状态模式场景: 电梯的运行维护,正常,自动开门,自动关门,向上运行,向下运行,消防状态,红绿灯红灯,绿灯,黄灯。网上购物时,订单的状态下单,已付款,已发货,送货中,已收货银行系统中账号状态的管理线程对象各状态之间的切换酒店的房间状态变化已预定,已入住,空闲。下面我们已酒店的房间状态变化为例,解释一下状态模式:核心:用于解决系统的状态转换,以及不同状态下行为的封装问题。结构原创 2017-04-10 10:49:10 · 279 阅读 · 0 评论 -
设计模式之备忘录模式
设计模式之备忘录模式核心:保存某个对象内部的拷贝,这样以后就可以将对象原先的状态。结构:源发器类:负责创建一个备忘录,用以记录当前对象的内部状态,通过也可以使用它来利用备忘录恢复内部状态。备忘录类:用于存储源发器的内部状态。负责人类:管理备忘录类。模式实现:我们就以保存员工信息为实现场景,在挑战第一次保存之后,员工的姓名,年龄,工资,然后存档,在对信息进行修改时,由于操作失误导致信息错误,原创 2017-04-09 15:50:19 · 297 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式场景:我们需要建一个复杂的产品例如一部手机,而且这个复杂产品的建造需要处理一个问题即装配这些子组件。建造者模式通常包括的角色:builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建原创 2017-04-07 11:04:43 · 268 阅读 · 0 评论 -
设计模式之原型模式
设计模式之原型模式什么是原型模式原型模式:通过new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式 就是java中的克隆技术,以某个对象为原型,复制出新的对象,显新的对象具有原型对象的特点 克隆,类似于new,但是不同于new new创建的对象属性采取默认值,克隆出的对象属性和原型对象相同,并且克隆出的新的对象改变不会影响原型对象。 原型模式的实现,Cloneable接口和原创 2017-04-21 10:57:44 · 507 阅读 · 0 评论