设计模式
luohai859
这个作者很懒,什么都没留下…
展开
-
设计模式中类的关系
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。1. 依赖(Dependence) 依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其转载 2012-03-09 13:48:08 · 807 阅读 · 0 评论 -
设计模式六大原则(2):里氏代换原则
里氏代换原则(Liskov Substitution Principle)里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章《Data Abstraction and Hierarchy》里面提出来的,主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中的蕴涵的原理。2002年,软件工程转载 2012-03-19 15:22:45 · 793 阅读 · 0 评论 -
设计模式之二 --- Singleton 模式
【1】基本概念Singleton 是一种创建性模式,它用来确保只产生一个实例,并提供一个访问它的全局访问点。对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在。【2】简单分析我们先来看一下该设计模式的UML结构图:为了实现 Singleton 模式,我们需要的是一个静态的变量,能够在转载 2012-03-09 13:54:10 · 533 阅读 · 0 评论 -
设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接口转载 2012-03-09 13:50:50 · 539 阅读 · 0 评论 -
设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是转载 2012-03-09 13:51:22 · 595 阅读 · 0 评论 -
设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也转载 2012-03-09 13:46:49 · 892 阅读 · 0 评论 -
掌握设计模式
IT职场的小菜经常有这样的疑问:为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bug重重,改好一个却又引出另一个,按下葫芦浮起瓢,几近崩溃。转载 2012-03-09 13:45:45 · 624 阅读 · 0 评论 -
设计模式之四 --- 建造(Builder)模式
【1】基本概念 建造(Builder)模式是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。【2】简单分析我们先来看一下该设计模式的UML结构图上图是Strategy 模式的结构图,让我们可以进行更方便的描述:Builder为创建一个Product对象的各个部件转载 2012-03-09 13:55:11 · 585 阅读 · 0 评论 -
设计模式之三 --- 策略模式(Strategy Pattern)
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。【1】基本概念策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。【2】简单分析我们先来看一下该设计模式的UML结构图转载 2012-03-09 13:54:42 · 600 阅读 · 0 评论 -
设计模式之一---工厂方法模式【Factory Method模式】
在设计模式中,Factory Method模式是一种比较简单的设计模式,应用比较广泛,但也是一种比较重要的设计模式之一。在很多地方我们都会看到xxxFactory这样命名的类,那么,什么是Factory Method,为什么要用这个模式,如何用Java语言来实现该模式?【1】基本概念FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类转载 2012-03-09 13:53:19 · 493 阅读 · 0 评论 -
设计模式之五 --- 代理(Proxy)模式
【1】基本概念代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。代理者可以作任何东西的接口:网络连接、内存中的大物件、档案或其它昂贵或无法复制的资源。【2】简单分析我们先看一下该设计模式的UML结构图:我们通过上面的结构图可以看到:Subject类:定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都转载 2012-03-09 13:55:39 · 806 阅读 · 0 评论 -
设计模式六大原则(6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是面向对象设计中最基础的设计原则,转载 2012-03-09 13:52:01 · 590 阅读 · 0 评论 -
设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接转载 2012-03-09 13:50:16 · 550 阅读 · 0 评论 -
依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,这一点在我的前一篇博文《设计模式中类的关系》中已经有所提及,下面就来详细的论述一下在java中如何准确的体现依赖、关联、聚合和组合。首先看一看书上对这四种关系的定义:转载 2012-03-09 13:49:05 · 9435 阅读 · 1 评论 -
设计模式, 一篇就够:
文章首发:设计模式看了又忘,忘了又看?设计模式收藏这篇就够了耗时了 5 个月,终于把设计模式一整个系列写完。其实设计模式这一系列文章网上已经有很多非常好、非常优秀的文章,为什么要写呢?一方面是为了学得更扎实,印象中设计模式学习了 2 遍,记得牢的基本就那几个众所周知的,反思前面 2 次学习过程,缺少了思考的过程,没有把知识消化掉转化成自己的,就像动物一样,吃进去的东西没有消化只能排出。另一...转载 2019-05-27 18:05:36 · 310 阅读 · 0 评论