随笔分类 -  设计模式

1
摘要:什么是访问者模式? 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。数据结构的每一个节点都可以接受一个访 阅读全文
posted @ 2017-10-24 11:30 snailteam 阅读(475) 评论(2) 推荐(0)
摘要:什么是责任链模式? 在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要 阅读全文
posted @ 2017-10-23 11:34 snailteam 阅读(2014) 评论(1) 推荐(0)
摘要:什么是策略者模式? 策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。对算法的包装,是把使用算法的责任和算法本身分割开,委派给不同的对象负责。策略模式通常把一系列的算法包装到一系列的策略类里面。用一句话慨括 阅读全文
posted @ 2017-10-20 15:45 snailteam 阅读(1158) 评论(0) 推荐(0)
摘要:什么是状态者模式? 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用来解决这样的 阅读全文
posted @ 2017-10-19 14:32 snailteam 阅读(622) 评论(1) 推荐(0)
摘要:什么是中介者模式? 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群、短信平台和房产中介。不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了。电话、短 阅读全文
posted @ 2017-10-18 15:29 snailteam 阅读(15570) 评论(6) 推荐(1)
摘要:什么是观察者模式? 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为。结构:可以看出,在观察者模式的结构图有以下角色: 抽象主题角色(Subject):抽象主题把所有观察者对象的引用保存在一 阅读全文
posted @ 2017-10-17 15:19 snailteam 阅读(482) 评论(0) 推荐(0)
摘要:什么是迭代器模式? 迭代器是针对集合对象而生的,提供了一种方法顺序访问一个聚合对象(可理解为集合对象)中各个元素,而又无需暴露该对象的内部表示,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。从上图可以看出,迭代器模式由以下角色组成: 迭代器角色(Iterator):迭代 阅读全文
posted @ 2017-10-16 16:42 snailteam 阅读(304) 评论(0) 推荐(0)
摘要:什么是命令模式? 命令模式将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 抽象命令(Command):定义命令的接口,声明执行的方法。 具体命令(ConcreteCommand):具体命令,实现要 阅读全文
posted @ 2017-10-15 21:33 snailteam 阅读(336) 评论(1) 推荐(0)
摘要:什么是模板方法模式? 模板方法模式——在一个抽象类中定义一个操作中的算法骨架(对应于生活中的大家下载的模板),而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去 阅读全文
posted @ 2017-10-14 15:14 snailteam 阅读(282) 评论(0) 推荐(0)
摘要:什么是代理模式? 代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。概念: 给某一个对象提供一个代理,并由代理对象控制对原对象的引用。角色: Subject(抽象 阅读全文
posted @ 2017-10-13 11:55 snailteam 阅读(548) 评论(0) 推荐(0)
摘要:什么是享元模式? 所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共享的对象必须是细粒度对象。两个重要的概念:内部状态、外部状态。 内部状态:在享元对象内部不 阅读全文
posted @ 2017-10-12 11:59 snailteam 阅读(800) 评论(0) 推荐(0)
摘要:什么是外观模式? 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。 门面(Fa 阅读全文
posted @ 2017-10-11 12:10 snailteam 阅读(471) 评论(0) 推荐(0)
摘要:什么是组合模式? 组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。 组合部件(Component):它是一 阅读全文
posted @ 2017-10-10 18:37 snailteam 阅读(25514) 评论(3) 推荐(1)
摘要:什么是装饰者模式? 装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相比生成子类可以更灵活地增加功能。 Component:一般是一个抽象类(也有可能不是),是一组有着某种用途类的基类,包含着这些类最基本的特性。 ConcreteComponent:继承自Component, 阅读全文
posted @ 2017-10-09 11:26 snailteam 阅读(581) 评论(0) 推荐(0)
摘要:什么是桥接模式? 定义:将抽象部分与实现部分分离,使它们都可以独立的变化。看定义,可能有点懵,不过没关系,下面我们将通过一个例子展开说明。例子:品牌汽车内置导航仪,但是希望实现每个品牌的导航仪都可以在任何一个品牌的汽车上安装并启动。假设汽车品牌: 宝马、奔驰假设导航仪品牌: 神行者、北斗、高德。 设 阅读全文
posted @ 2017-09-30 14:13 snailteam 阅读(780) 评论(0) 推荐(0)
摘要:什么是适配器模式? 把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。 模式中的角色: 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adaptee):需要适配的类或适配者类。 适配器(Ad 阅读全文
posted @ 2017-09-29 11:53 snailteam 阅读(710) 评论(1) 推荐(2)
摘要:什么是原型模式? 《西游记》中,孙悟空可以根据自己的形状复制(克隆)出多个身外身,如上图所示,这种技巧在面向对象软件设计领域被称之为原型模式,孙悟空被称之为原型对象。原型模式通过复制一个原型对象得到多个与原型对象一模一样的新对象。原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建 阅读全文
posted @ 2017-09-28 15:02 snailteam 阅读(397) 评论(0) 推荐(0)
摘要:如果再次取名“一个建造者能写出花来?”,估计真的就变成写花系列了。本篇还是中规中矩:设计模式之建造者模式 什么是建造者模式? 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个租车公司需要采购一批车时,在这个实际需求中,车就是一个复杂的对象,它是 阅读全文
posted @ 2017-09-27 16:35 snailteam 阅读(667) 评论(2) 推荐(2)
摘要:简单工厂模式 工厂模式 抽象工厂模式 简单工厂模式 工厂模式 抽象工厂模式 简单工厂模式 什么是简单工厂模式? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程中,当使用"new"关键字创建一个对象时,此时该类就依赖与这个对象,也就 阅读全文
posted @ 2017-09-26 18:29 snailteam 阅读(1067) 评论(1) 推荐(2)
摘要:什么是单例模式? 从“单例”字面意思上理解为——一个类只有一个实例,所以单例模式也就是保证一个类只有一个实例的一种实现方法罢了。其官方定义为:确保一个类只有一个实例,并提供一个全局访问点。 为什么会有单例模式? 从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实 阅读全文
posted @ 2017-09-25 15:52 snailteam 阅读(1854) 评论(0) 推荐(1)

1