
设计模式
文章平均质量分 90
xingjiarong
本科生,IT男,单身狗,喜欢足球
展开
-
设计模式(一)简单工厂模式
一、模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二、模式结构从上图可以看出原创 2015-11-23 20:05:09 · 13548 阅读 · 9 评论 -
设计原则(四)依赖倒置原则(DIP)
一、什么是依赖倒置原则一种表述: 抽象不应当依赖于细节;细节应当依赖于抽象。另一种表述: 要针对接口编程,不要针对实现编程。针对接口编程的意思就是说,应当使用Java接口和抽象Java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。不要针对实现编程的意思就是说,不应当使用具体Java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。二原创 2015-11-29 12:11:14 · 6567 阅读 · 3 评论 -
设计原则(三)组合复用原则
一、什么是组合复用原则组合复用原则也叫合成/聚合复用原则(CARP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 这个原则的简短表述就是:要尽量使用组合,尽量不要使用继承。二、实现复用的两种方式在面向对象的设计里,有两种基本的方法可以在不同的环境中复用已有的设计和实现,即通过组合或通过继承。组合由于组合可以将已有的对象纳入原创 2015-11-28 15:55:53 · 11050 阅读 · 4 评论 -
设计模式之桥梁模式和策略模式的区别
桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。 桥梁模式: 策略模式: 在桥接模式中,Abstraction通过聚合的方式引用Implementor。 举一个例子:策略模式:我要画圆,要实心圆,我可以用solidPen来配置,画虚线圆可以用dashedPen来配置。这是strategy模式。 桥接模式:同样是画圆,原创 2015-12-16 21:57:53 · 5390 阅读 · 2 评论 -
设计模式(九)装饰模式(Decorator)
一、咖啡店的故事这次我们借用HeadFirst中的咖啡店的故事来讨论一下装饰模式。咖啡店中有各种种类的咖啡和咖啡需要加的配料。有一家咖啡店为了提高效率打算开发一套咖啡订购系统,用户可以根据清单选择咖啡和咖啡所加的配料,系统可以自动的计算总价格。第一种方案是这个样子的:Beverge是一个抽象类,店内所有的饮料都必须继承自这个类。description用来描述这个是什么类型的饮料例如:Dark Roa原创 2015-12-02 01:16:14 · 5105 阅读 · 1 评论 -
设计模式(八)桥梁模式(Bridge)
一、写在前面之前有读者评论说,前边的文章开头理论性太强了,显得晦涩难懂,会把读者搞晕,谢谢这位读者,同时也希望其他的读者多提意见,帮助我改正提高博客,为了改进之前的问题,今天我们先用例子引入,然后再给出桥梁模式的相关概念。二、问题引入例子1:现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需原创 2015-12-01 17:50:53 · 14409 阅读 · 8 评论 -
设计模式(十)适配器模式
一、问题引入说起适配器其实在我们的生活中是非常常见的,比如:如果你到日本出差,你会发现日本的插座电压都是110V的,而我们的手机充电器和笔记本充电器都是220V,所以你到了日本之后就没办法充电了,这时候我们通常会怎么办呢,当然是使用一个升压的变压器将电压升高到220V,这样我们的手机通过一个变压器(适配器)就能使用原本不能使用的插座了。又比如说,有的国家的插座都是三孔的,而我们的手机大部分都是两孔的原创 2015-12-03 11:44:06 · 3318 阅读 · 2 评论 -
设计模式(十一)策略模式
一、打折的烦恼有一家卖书的网站想做一套结算系统,其中的一部分就是计算书的价格,这家网站上的书基本上都有优惠,而且不同种类的书优惠不同,比如漫画书打9折,小说打6折等等,他们刚开始的设计是这样的。方案一:在客户端进行判断if(book is comic) price*=0.9;else if(book is novel) price*=0.6;看起来好像也没什么问题,但是当我们的书种原创 2015-12-04 00:07:32 · 3267 阅读 · 2 评论 -
UML之时序图详解
作者 : 万境绝尘 转载请注明出处 : http://blog.youkuaiyun.com/shulianghan/article/details/17927131动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图; – 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互; – 协作转载 2015-12-21 19:10:42 · 80654 阅读 · 12 评论 -
设计模式(十二)责任链模式
一、击鼓传花击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客一次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,贾赦传给贾政,贾政传给贾宝玉,贾宝玉传给贾环,贾环再传原创 2015-12-05 16:42:06 · 2831 阅读 · 3 评论 -
设计原则(二)里氏替换原则(LSP)
一、什么是里氏替换原则 里氏替换原则的严格表达是:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。比如,假设有两个类,一个是Base类,另一个是Child类,并且原创 2015-11-29 11:03:47 · 12394 阅读 · 7 评论 -
设计模式(七)门面模式(Facade Pattern 外观模式)
一、模式定义门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。二、模式动机现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的原创 2015-11-28 16:14:11 · 28487 阅读 · 3 评论 -
设计原则(一)"开-闭"原则(OCP)
经典力学的基石是牛顿三大定律。而面向对象的可复用设计的第一块基石,便是所谓的”开-闭“原则(Open-Closed Principle,常缩写为OCP)。一、什么是开闭原则“开-闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。这一原则最早由Bertrand Meyer提出,英文原文是:Software entities should be open for extension,but clo原创 2015-11-23 16:16:39 · 2791 阅读 · 2 评论 -
设计模式(二)工厂方法模式
一、模式定义工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟原创 2015-11-23 22:27:04 · 3055 阅读 · 3 评论 -
设计模式(五)创建者模式(Builder)
一、模式定义造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。二、模式动机无论是在现实世界中还是在软件系统中,都存在一些复原创 2015-11-25 18:15:51 · 6665 阅读 · 4 评论 -
设计模式(四)单例模式
写在前边:辛辛苦苦写了好几天终于能有一篇发到首页上了,其中的艰辛就不必多说了,我不是专家不发能首页,好多文章博乐也都不看,比起首页上那些空洞无味的文章,我觉得我的博客对一部分人能起到帮助的作用,如果您觉得我写的还可以就顶一下吧,您的支持是我最大的动力!一、模式定义单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类原创 2015-11-25 18:50:33 · 3168 阅读 · 4 评论 -
设计模式(三)抽象工厂模式
一、模式定义抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。二、产品族和等级结构为了更清晰地理解抽象工厂模式,需要先引入两个概念:产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌原创 2015-11-26 08:13:02 · 3646 阅读 · 1 评论 -
设计模式(六)原型模式
一、说说鸣人的影分身话说鸣人听了水木老师的建议偷出了卷轴并且学会了一招禁术:影分身之术。当鸣人使用影分身之术的时候就会有好多个和鸣人一模一样的人出现,就像复制出来的一样,这种影分身之术在面向对象的设计领域里就叫做原型模式。二、什么是原型模式有了上边的鸣人的例子,我们再理解圆形模式的定义应该会更简单了,GOF给它的定义是:用原型实例指定创建对象的种类并且通过拷贝这些原型对象创建新的对象。原创 2015-11-28 16:13:22 · 2473 阅读 · 2 评论 -
设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)
类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。接下来我们就来谈谈类图的组成,在下一篇中我们将讨论一下类图之间的关系。一、类图的组成1. 普通类上图就是一个UML的普通类图,从上图我们看出,一个UML通常由三部分组成。第一部分是类名:每个类都必须有一个名字,类名是一个字符串。第二部分是类的属性(Attr原创 2016-02-11 09:41:03 · 16753 阅读 · 7 评论