设计模式
文章平均质量分 92
HelloWorld_EE
这个作者很懒,什么都没留下…
展开
-
《设计模式》之单例模式
单例模式的特点 1、只能有一个实例 2、给外部的所有对象提供这一实例。单例模式有如下几种 1、饿汉式单例模式 2、懒汉式单例模式 3.双重检查式单例模式 4.类级内部类单例模式下面将进行详细的介绍。饿汉式单例模式public class HungrySingle { //构造函数私有 private HungrySingle(){原创 2015-10-20 21:27:56 · 474 阅读 · 0 评论 -
Java中深拷贝和浅拷贝的研究
Java中深拷贝和浅拷贝的研究这篇博文主要来研究下深拷贝和浅拷贝吧原创 2015-10-24 22:00:38 · 1581 阅读 · 0 评论 -
《设计模式》之模板方法模式
《设计模式》之模板方法模式定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中来实现,使得子类可以不改变算法的结构即可重定义该算法中的某些特定的步骤。类型:行为类模式光看定义可能还不是很明白,举个例子可能就更清楚了,例如我们需要实现这样的一个功能:对一个数组进行排序然后输出此数组。此功能包括两个步骤:先排序后输出,这就是我们算法框架的思想。由于排序的方法有很多种:快排、归并排序、冒泡等,因此我们原创 2015-10-25 16:44:15 · 564 阅读 · 0 评论 -
《设计模式》六大原则之一:依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者转载 2015-10-24 15:39:46 · 646 阅读 · 0 评论 -
《设计模式》六大原则之一:接口隔离原则
接口隔离原则定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。通俗来讲:将一个庞大的接口变更为几个较小的专用的接口所采用的就是接口隔离原则问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。转载 2015-10-24 16:17:44 · 785 阅读 · 0 评论 -
《设计模式》之抽象工厂模式
《设计模式》之抽象工厂模式概念抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。“一对多”的关系。UML各个类的角色与工厂模式类似。抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法原创 2015-10-23 22:50:31 · 444 阅读 · 0 评论 -
《设计模式》之工厂方法
《设计模式》之工厂方法前面介绍了简单工厂模式,这种模式的关键、核心在于工厂,他负责根据用户的需求返回相应的产品实例对象,这种设计模式的缺点就在于:工厂的责任太大,当工厂不能够工作之后,整个设计就基本瘫痪不遵守“开闭原则—对扩展开放,对修改关闭”,当需要增加一个新的产品类的时候,就需要修改工厂类的代码当产品类达到一定的程序的时候,这个工厂的代码将非常庞大,不利用维护。因此,就有了工厂方法模式概原创 2015-10-23 20:46:09 · 569 阅读 · 0 评论 -
《设计模式》之建造者模式
建造者模式定义建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML图建造者模式通常包括下面几个角色:builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。ConcreteBuilder:实现Build原创 2015-10-24 20:25:06 · 692 阅读 · 0 评论 -
设计模式》六大原则之一:开闭原则
开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是面向对象设计中最基础的设计原则,它指导转载 2015-10-24 17:11:27 · 921 阅读 · 0 评论 -
《设计模式》六大原则之一:里氏替换原则
《设计模式》六大原则:里氏替换原则1 什么是里氏代换原则里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章《Data Abstraction and Hierarchy》里面提出来的,主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中的蕴涵的原理。2002年,我们前面单一职责原则中提到的软件原创 2015-10-24 15:18:11 · 726 阅读 · 0 评论 -
设计模式中类的关系
设计模式中类的关系在java以及其他的面向对象设计模式中,类与类之间主要有6中关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。依赖(Dependence)- - - - - - ->依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的转载 2015-10-24 13:10:46 · 610 阅读 · 0 评论 -
《设计模式》六大原则之一:迪米特法则
迪米特原则定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米转载 2015-10-24 16:47:43 · 518 阅读 · 0 评论 -
《设计模式》六大原则之一:单一职责原则
单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改转载 2015-10-24 14:10:25 · 586 阅读 · 0 评论 -
《设计模式》之装饰者模式
《设计模式》之装饰者模式看了很多博文,感觉自己都没有彻底理解清楚装饰者模式,总是感觉还差点什么。定义装饰者模式:动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式比生成子类更为灵活。Decorator模式的工作原理是:可以创建始于Decorator对象(负责新的功能的对象)终于原对象的一个对象“链”。 装饰者模式隐含的是通过一条条装饰链去实现具体对象,每一条装饰链都始于原创 2015-10-22 21:21:45 · 607 阅读 · 0 评论 -
《设计模式》之简单工厂模式
《设计模式》之简单工厂模式简单工厂模式Simple Factory根据提供给它的数据(就是参数),返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象)。简单工厂模式的UML图 简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂。采用简单工厂的优点是可以使用户根据参数获得对应的原创 2015-10-22 22:37:50 · 516 阅读 · 0 评论 -
《设计模式》之策略模式
《设计模式》之策略模式看了许多关于讲解《策略模式》的,发现还是这篇讲的比较好,容易理解。因此也就转载过来了。 原文地址:http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个转载 2015-10-22 19:37:35 · 553 阅读 · 0 评论 -
《设计模式》之原型模式
《设计模式》之原型模式定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:客户(Client)角色:使用原型对象的客户程序抽象原型(Prototype)角色:规定了具体原型对象必须实现的接口(如果要提供深拷贝,则必须具有实现clone的规定)具体原型(ConcretePrototype):从抽象原型派生而来,是客户程序使用的对象,即被复制的对象。此角色需要原创 2015-10-24 21:33:21 · 556 阅读 · 0 评论