设计模式
王忠海
这个作者很懒,什么都没留下…
展开
-
设计模式GOP23 概要
一.创建型模式1.单例模式 ,工厂模式,抽象工厂模式,建造者模式,原型模式。2.帮助我们建造一些相关的对象。3.主要是关注对象的创建过程二.结构性模式--适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式.--核心作用:是从程序的结构上实现松耦合,从而扩大整体的松耦合,用来解决更大的问题。--关注对象和类的组织三.行为型模式--模版方法模式,命令模式,迭代器模式,观察者模式,中...原创 2018-03-16 18:19:02 · 241 阅读 · 0 评论 -
责任链模式
一.概要1.定义:将能够处理同一类请求的对象连成一个链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理改请求,如果能则处理,如果不能则传递给链上的下一个对象。2.场景:--打牌时,轮流出牌--接力赛跑--大学中,奖学金审批--公司中,公文审批3.4.二.案例三.开发中场景-Java中,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型时,就自动跳到...原创 2018-03-19 18:10:10 · 158 阅读 · 0 评论 -
迭代器模式
一.概要1.场景:--提供一种可以遍历聚合对象的方式。又称为游标模式--聚合对象:存储数据--迭代器:遍历数据二.结构原创 2018-03-19 19:19:31 · 192 阅读 · 0 评论 -
中介者模式
一.概要1.如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为"同事关系"2.我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如下的星形机构 。二.中介者模式类图三.课堂代码类图四....原创 2018-03-19 19:51:31 · 114 阅读 · 0 评论 -
命令模式
一.概要1.命令模式:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称为:动作Action模式,事务transaction模式。2.结构--Commangd抽象命令类--ConcreteCommand具体命令类--Invoker调用者、请求者 .请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定接受...原创 2018-03-20 18:51:02 · 118 阅读 · 0 评论 -
解释器模式
一.概要二.开发场景原创 2018-03-20 18:59:17 · 150 阅读 · 0 评论 -
访问者模式
原创 2018-03-20 19:00:20 · 112 阅读 · 0 评论 -
策略模式
一.概要1.场景二.传统处理三.策略模式1.策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法来解决某一问题,同时可以方便的更换算法或则增加新的算法。并且由客户端决定调用哪个算法。2.课堂案例的类图四.本质--分离算法,选择实现五.开发总常见的场景--JavaSE中GUI编程,布局管理--Spring框架中,Resource接口,资源访问策略--javax.servlet....原创 2018-03-20 19:30:06 · 120 阅读 · 0 评论 -
模板方法模式
一.概要--客户到银行办理业务 1.取号排队 2.办理具体现金、转账,企业,个人,理财业务 3.给银行工作人员评分二.模板方法模式介绍1.模板方法模式是编程中经常用到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。2.处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此...原创 2018-03-21 18:34:47 · 144 阅读 · 0 评论 -
状态模式
一.场景二.概要1.核心:用于解决系统中复杂对象的状态变换以及不同状态下行为的封装问题2.结构:--Context环境类:环境类维护一个State对象,他是定义了当前的状态--State抽象状态类--ConcreteState具体状态类:每个类封装了状态对应的行为三.开发中常见的场景--银行系统中账号状态的管理--OA系统中公文状态的管理--酒店系统,房间状态的管理--线程对象各状态之间的切换...原创 2018-03-21 19:06:06 · 151 阅读 · 0 评论 -
备忘录模式
一.概要1.场景2.核心:就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。3.结构--源发器类Originator--备忘录类Memento--负责人类CareTake4.二.开发场景...原创 2018-03-22 18:41:40 · 141 阅读 · 0 评论 -
享元模式(FlyWeight)
一.概要1.场景:内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存。2.核心:--享元模式以共享的方式高效的支持大量细粒度对象的重用--享元对象能做到共享的关键是区分了内部状态和外部状态 .内部状态:可以共享,不会岁环境变化而变化 .外部状态:不可以共享,会随环境变化而变化二.享元模式实现的UML图三.享元模式实现--Fl...原创 2018-03-18 16:29:36 · 229 阅读 · 0 评论 -
单例模式
一.核心作用保证一个类只有一个实例,并且提供访问该实例的全局访问点。二.常见的应用场景1.Windows的Task Manager(任务管理器)就是很典型的单例模式.2.Windoes的回收站3.网站的计数器4.应用程序的日志应用5.数据库连接池的设计,因为数据库连接是一种数据库资源.6.操作系统的文件系统,一个操作系统只有一个文件系统.7.Web应用的Application8.Spring中的B...原创 2018-03-16 18:35:43 · 118 阅读 · 0 评论 -
工厂模式
一.概要1.工厂模式--实现了创建者与调用者的分离--详细分类.简单工厂模式:用来生产同一等级结构的任意产品。(对于生产新的产品,需要修改已有代码,违反了开闭原则).工厂方法模式:用来生产统一等级结构的固定产品。(支持增加任意产品).抽象工厂模式:用来生产产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)2.面向对象设计的基本原则.(OCP 开闭原则,Open-Closed Prin...原创 2018-03-17 11:04:38 · 127 阅读 · 0 评论 -
建造者模式
一.概要1.场景--我们要建造一个复杂的产品。比如:神州飞船,Iphone。这个复杂的产品的创建,有这样的一个问题需要处理:装配这些子组件是不是有个步骤问题?--实际开发中,我们所需要的对象创建时,也非常复杂,有很多步骤需要处理时。2.建造模式的本质:--分离了对象子组件的单独构造(由Builder来负责)和装配。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。--由...原创 2018-03-17 13:53:13 · 112 阅读 · 0 评论 -
原型模式
一.概要1.场景--思考一下:克隆技术是怎么样的过程?克隆羊多利大家还记得吗?--javascript语言中的,继承是怎么实现的?那里面也有prototype,大家还记得吗?2.原型模式--通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模型。--就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点--优势有:效率高( 直接克隆,避免了...原创 2018-03-17 14:12:31 · 203 阅读 · 0 评论 -
适配器模式
一.概要1.什么是适配器模式? 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作了。2.模式中的角色--目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。--需要适配的类(Adaptee):需要适配的类或适配者类。--适配器(Adapter):通过包装一个需要适配的对象,把源接口转为目标...原创 2018-03-17 18:02:26 · 97 阅读 · 0 评论 -
代理模式
一.概要1.核心作用通过代理,控制对对象的访问。可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(AOP的微观实现)2.AOP(Aspect Oriented Programming面向切面编程)的核心实现机制二.核心角色. 抽象角色----定义代理角色和真实角色的公共对外方法真实角色----实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用...原创 2018-03-17 18:48:18 · 109 阅读 · 0 评论 -
桥接模式
一.概要1.场景--商场系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?2.我们用多层继承结构实现如下图的关系3.问题--扩展性问题(类个数膨胀问题).如果要增加一个新的电脑类型,则要增加各个品牌下面的类.如果要增加一个品牌,也要增加各个电脑类型的类--违反单一职责原则:.一个类:联想笔记本,有两个引起这个类变化的原因二.场景分析三.桥接模式核心要点四.桥接模式总结--桥接模式...原创 2018-03-18 10:52:20 · 204 阅读 · 0 评论 -
组合模式
一.概要1.使用组合模式的场景--把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。2.组合模式核心--抽象构件(Component)角色:定义了叶子和容器构件的共同点--叶子(Leaf)构件角色:无子节点--容器(Composite)构件角色:有容器特征,可以包含子节点3.组合模式工作流程分析:--组合模式为处理树形结构提供了完美的解决方案,描述了如何将容...原创 2018-03-18 11:36:23 · 125 阅读 · 0 评论 -
外观模式
一.概要1.迪米特法则(最少知识原则):一个软件应当尽可能少的与其他实体实体发生相互作用.二.外观模式的核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用。...原创 2018-03-18 15:46:06 · 145 阅读 · 0 评论 -
观察者模式
一.概要二.核心1.观察者模式主要用于1:N的通知。当一个对象(目标对象Subject或Observable)的状态变化时,他需要及时告知一系列对象(观察者,Observer),令他们做出相应。2.通知观察者的方式.推:每次都会把通知以广播的方式发送给所有观察者,所有观察者只能被动接受.拉:观察者只要知道有情况即可。至于什么时候获取内容,获取什么内容,都可以自主决定。三.类结构四.JAVASE提供...原创 2018-03-21 19:54:12 · 142 阅读 · 0 评论