![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
安多的风ch
求知若饥 虚心若愚
展开
-
适配器模式
一、适配器模式定义将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。根据适配器类与适配者类的关系不同,适配器模式可以分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承关系(或实现)关系。在实际开发中,对象原创 2017-01-12 22:27:09 · 147 阅读 · 0 评论 -
职责链模式
1.职责链模式概述很多情况下,在一个软件系统中可以处理某个请求的对象不止一个,例如SCM系统中的采购单审批,主任、副董事长、董事长和董事会都可以处理采购单,他们可以构成一条处理采购单的链式结构,采购单沿着这条链进行传递,这条链就称为职责链。职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组原创 2017-03-24 11:19:53 · 638 阅读 · 0 评论 -
策略模式
1.策略模式概述在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。2.策略模式定义 策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可原创 2017-03-30 13:25:21 · 692 阅读 · 0 评论 -
建造者模式
1.建造者模式前言建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。2.建造者模式定义建造者模式(Builder原创 2017-03-07 13:14:07 · 467 阅读 · 0 评论 -
享元模式
1.享元模式前言当一个软件系统在运行时产生的对象数量太多,将导致运行代价过高,带来系统性能下降等问题。例如在一个文本字符串中存在很多重复的字符,如果没一个字符都用一个单独的对象来表示,将会占用较多的内存空间,那么我们如何去避免系统中出现大量相同或相似的对象,同时又不影响客户端程序通过面向对象的方式对这些对象进行操作?享元模式正为解决这一类问题而诞生。享元模式通过共享技术实现相同或相似对象的重用,在逻原创 2017-03-23 09:34:12 · 390 阅读 · 0 评论 -
观察者模式
1.观察者模式概述观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察者目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。2.观察者模式定义 观察者模式(Observ原创 2017-03-29 13:47:10 · 537 阅读 · 0 评论 -
组合模式
1.组合模式概述对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下我们希望一致地处理它们,因为对于这些对象的区别对待将会使得原创 2017-03-12 15:45:05 · 276 阅读 · 0 评论 -
代理模式
1.代理模式前言近年来,代购已经逐步成为电子商务的一个重要分支。所谓代购,简单来说就是找人帮忙购买所需要的商品,当然你可能需要向实施代购的人支付一定的费用。代购通常分为两种类型:一种是因为在当地买不到某件商品,又或者是因为当地这件商品的价格比其他地区的贵,因此托人在其他地区甚至国外购买该商品,然后通过快递发货或者直接携带回来;还有一种代购,由于消费者对想要购买的商品相关信息的缺乏,自己无法确定其实际原创 2017-03-20 18:48:12 · 679 阅读 · 0 评论 -
桥接模式
1.桥接模式概述桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接连个独立继承结构的桥,故名桥接模式。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关原创 2017-03-10 08:03:28 · 322 阅读 · 0 评论 -
外观模式
1.外观模式定义外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类子系统的内部复杂性分离开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。 外观模式定义如下:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具原创 2017-03-18 22:29:01 · 224 阅读 · 0 评论 -
单例模式
1.单例模式定义单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统 提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种面向对象的创建型模式。单例模式有三个要点:①某个类只能有一个实例;②它必须自行创建这个实例;③它必须自行向整个系统提供这个实例。2.单例模式结构单例模式结构图中只包含一个单例角色:Singleton(单例):在原创 2017-02-26 15:19:40 · 303 阅读 · 0 评论 -
抽象工厂模式
1.抽象工厂模式前言工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是抽象工厂模式的基本思想。 产品等级结构与产品族在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品原创 2017-03-04 20:08:25 · 428 阅读 · 0 评论 -
简单工厂模式
1.简单工厂模式定义简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。2.简单工厂模式包含如下几个角色工厂角色(Factory):工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有产品原创 2017-02-24 14:52:25 · 467 阅读 · 0 评论 -
工厂方法模式
1.工厂方法模式前言在简单工厂模式中只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则”。此外,在简单工厂模式中,所有的产品都同一个工厂创建,工厂职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严原创 2017-03-02 14:35:07 · 193 阅读 · 0 评论 -
原型模式
1.原型模式概述在使用原型模式时,我们需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。原型模式的工作原理:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一种“另类”的创建型模式,创建克隆对象的工厂就是原原创 2017-02-28 17:27:33 · 242 阅读 · 0 评论 -
装饰模式
1.装饰模式概述装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继原创 2017-03-16 17:33:47 · 172 阅读 · 0 评论