![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 64
sunByFeng
这个作者很懒,什么都没留下…
展开
-
结构型-适配器模式(adapter)
意图:将一个类的接口转换成客户希望的另外一个接口。adapter模式是原本由于接口不兼容而不能一起工作的那些类可以一起工作。其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 **适用性:**1.你想使用一个已经存在的内,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作。 3.你想使用一些已经存原创 2017-08-07 16:35:31 · 352 阅读 · 0 评论 -
行为型-责任链模式(Responsibility)
职责链模式概述 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。 ● Handler(抽象处理者):它定义了一个处理请求的接口,一般设计为抽象类,由于不同的具体处理者处理请求的方式不同,因此在其中定义了抽象请求处理方法。因为每一个处理者的下家还是一个处理者,因此在抽象处原创 2017-09-27 16:41:50 · 404 阅读 · 0 评论 -
行为型-观察者模式(Observer)
观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式是一种对象行为型模式。 在观察者模原创 2017-08-08 10:35:58 · 335 阅读 · 0 评论 -
行为型-模板方法模式(Template Method)
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 (1) AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中原创 2017-09-11 11:19:10 · 271 阅读 · 0 评论 -
行为型-策略模式(strategy)
策略模式:定义了家族算法,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。 在策略模式结构图中包含如下几个角色: ● Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。 ● Strategy(抽象策略类):它为原创 2017-09-11 10:29:47 · 331 阅读 · 0 评论 -
创建型-原型模式(prototype)
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。 原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一原创 2017-08-07 15:08:46 · 327 阅读 · 0 评论 -
创建型-建造模式(builder)
建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。建造者模式(Builder Pattern):将一个复杂对象的原创 2017-08-07 14:24:21 · 342 阅读 · 0 评论 -
设计模式应用相关面试题目
设计模式应用相关面试题目 设计模式理论1.什么是设计模式?你是否在你的代码里面使用过任何设计模式?在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。平时用的比较多有单例模式(在内存中仅实例化一个对象时使用),适配器模式(典型的就是ListView和Gri转载 2017-07-11 20:23:54 · 639 阅读 · 0 评论 -
创建型-抽象工厂模式(abstract factory)
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的原创 2017-08-07 12:56:12 · 342 阅读 · 0 评论 -
创建型-单例模式(singleton)
意图:保证一个类只有一个实例,并提供访问它的全局变量。 动机:例如一个会计系统只能专用于一个公司。为保证没有其他实例对象可以被创建,并且可以提供一个访问该实例的方法。 适用性:当类只能被一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展,并且客户应该无须更改代码就能使用一个拓展的实例时。 单例模式结构图: 协作:用户只能通过getInstanc原创 2017-08-06 21:06:01 · 318 阅读 · 0 评论 -
创建型-工厂模式(simple factory)
1.意图:定义用于创建对象的接口,让子类决定实例化哪一个类。factory method 使一个类实例化延迟到子类。 2.别名:虚拟构造器。 3.动机:框架使用抽象类定义和维护对象之间的关系。 **4.适用性:**1.当一个类不知道它说必须创建的对象的类的时候。 2.当一个类希望由他的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个原创 2017-08-07 11:50:59 · 218 阅读 · 0 评论 -
设计模式分类
设计模式的分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 设原创 2017-07-28 12:58:57 · 508 阅读 · 0 评论 -
结构型-门面模式(Facade)
外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。 外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 (1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的原创 2017-08-08 10:34:10 · 359 阅读 · 0 评论 -
结构型-装饰者模式(decorator)
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。在软件设计中,我们也有一种类似新房装修的技术可以对已有对象(新房)的功能进行扩展(装修),以获得更加符合用户需求的对象,使得对象具有更加强大的功能。这种技术对应于一种被称之为装饰模式的设计模式. ● Component(抽象构件)原创 2017-08-08 10:28:40 · 327 阅读 · 0 评论 -
结构型-享元模式(Flyweight)
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。 享元模式概述:享元模式通过共享技术实现相同或相似对象的重用,在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同原创 2017-08-07 17:08:58 · 231 阅读 · 0 评论 -
结构型-桥接模式(Bridge)
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 组成角色: ●Abstraction(抽象类):用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implemen原创 2017-08-07 17:08:06 · 386 阅读 · 0 评论 -
结构型-组合模式(composite)
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。 结构: ● Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所原创 2017-08-07 17:07:12 · 313 阅读 · 0 评论 -
结构型-代理模式(proxy)
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。定义:代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制原创 2017-08-07 17:04:45 · 348 阅读 · 0 评论 -
行为型-命令模式(Command)
命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。 命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模原创 2017-09-27 17:27:20 · 385 阅读 · 0 评论