![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 94
凉秋cds
这个作者很懒,什么都没留下…
展开
-
工厂方法模式(Factory Method)
1 普通工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:我们举一个发送邮件和短信的例子。 (1)首先,创建二者的共同接口:public interface Sender { public void Send(); } 其次,创建实现类:public class MailSender implements Sender { @Overr转载 2016-03-21 22:12:13 · 264 阅读 · 0 评论 -
代理模式(Proxy)
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。代理模式定义如下: 【给某一个对象提供一个代理或占位符,并由代理对象转载 2016-03-22 20:13:35 · 444 阅读 · 0 评论 -
树形结构的处理--组合模式
先看看组合模式的定义吧,在《大话设计模式一书中》组合模式的定义为:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念 ,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合转载 2016-03-22 18:43:37 · 629 阅读 · 0 评论 -
复杂业务的简单接口--外观模式
(转自:http://blog.csdn.net/lovelion/article/details/8258121) 在软件开发中,有时候为了完成一项较为复杂的功能,一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现,由于涉及到的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似服务员一样的角色,由它来负责和多个业务类进行交互,而客户类只需与该类交互。外观模式通过引转载 2016-03-22 19:17:17 · 736 阅读 · 0 评论 -
实现对象的复用--享元模式(Flyweight)
(转自:http://blog.csdn.net/lovelion/article/details/7667781)1 围棋棋子的设计Sunny软件公司欲开发一个围棋软件,其界面效果如图14-1所示:Sunny软件公司开发人员通过对围棋软件进行分析,发现在围棋棋盘中包含大量的黑子和白子,它们的形状、大小都一模一样,只是出现的位置不同而已。如果将每一个棋子都作为一个独立的对象存储在内存中,将导致该围棋转载 2016-03-22 19:25:53 · 539 阅读 · 0 评论 -
扩展系统功能--装饰模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。1 与适配器模式的区别与联系适配器的运用场景原创 2016-03-22 00:49:09 · 407 阅读 · 0 评论 -
处理多维度变化--桥接模式Bridge
概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。转载 2016-03-22 01:32:50 · 1070 阅读 · 0 评论 -
对象的克隆--原型模式(Prototype)
原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的适用场景:(摘录自《设计模式迷你手册》) 1、当要实例化的类是在运行时刻指定时,例如,通过动态装载; 2、为了避免创建一个与产品类层次平行的工厂类层次时; 3、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们转载 2016-03-21 23:36:46 · 585 阅读 · 0 评论 -
复杂对象的创建--建造者模式(Builder)
1初识建造者模式建造者模式实际上是常用的设计模式。顾名思义,builder的意思是建造者或者建筑工人,谈到建造自然会想到楼房。楼房是千差万别的,楼房的外形、层数、内部房间的数量、房间的装饰等等都不一样,但是对于建造者来说,抽象出来的建筑流程是确定的,往往建筑一座楼房包括下面的步骤:(1)打桩,建立基础(2)建立框架等。建造者模式的本质和建造楼房是一致的:即流程不变,但每个流程实现的具体细节则是经常变转载 2016-03-21 22:56:32 · 1051 阅读 · 0 评论 -
不兼容模式的协调--适配器模式(Adapter)
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。比如你手机只有2.5mm接口(貌似就Nokia干的出来),但你只能买到3.5mm的,这时就需要买个适配器了(─.─|||意图宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。什么时候可以使用它:(1)你想使用一个已经转载 2016-03-22 00:11:06 · 840 阅读 · 0 评论 -
设计模式的预备知识:类图与设计原则
1 UML类图(转自:http://blog.csdn.net/tianhai110/article/details/6339565)在UML类图中,常见的有以下几种关系:泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)1.1 泛化(Generaliz原创 2016-03-22 12:05:47 · 1607 阅读 · 1 评论 -
单例模式(Singleton)
单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Pr转载 2016-03-21 22:22:50 · 429 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。请看例子: (1)操作接口public interface转载 2016-03-21 22:21:18 · 235 阅读 · 0 评论 -
请求的链式处理—职责链模式
转自:http://blog.csdn.net/lovelion/article/details/74208911 采购单的分级审批Sunny软件公司承接了某企业SCM(Supply Chain Management,供应链管理)系统的开发任务,其中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副转载 2016-03-24 18:03:58 · 1149 阅读 · 0 评论