设计模式剖析
文章平均质量分 79
设计模式剖析
差池-BJ
1:高性能,高并发
2:技术原理
展开
-
设计模式之迭代器模式
迭代器模式是使用非常普遍的设计模式,本文介绍一下什么是迭代器模式,以及如何实现迭代器模式。一.定义提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示,迭代器模式是一种对象行为型模式。二.使用场景当需要为聚合对象提供多种遍历方式时。当需要为遍历不同的聚合结构提供一个统一的接口时。当访问一个聚合对象的内容而无须暴露其内部细节的表示时。三.优缺点1:优点:访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。它支持以不同方式遍历一个原创 2020-12-05 23:22:50 · 139 阅读 · 0 评论 -
设计模式之深入理解创建者模式
平时大家说的比较多的还是工厂方法模式或抽象工厂模式,今天说一说创建者模式。一.定义指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。二.特点1、它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。2、它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。三.优缺点1、优点:封装性好,构建和表示分离;扩展性好,各个具体的建造者相互独立,有利于系统的解耦;客户端不必知道产品内部组成的细节,建造者可以对创原创 2020-09-20 13:17:59 · 454 阅读 · 0 评论 -
设计模式之深入理解抽象工厂模式
接着前一篇工厂方法模式,本文介绍抽象工厂模式。一.定义定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族(品牌)的不同种类的产品的模式结构。二.优缺点1、优点:可以在类的内部对产品族中相关联的多个种类产品共同管理,而不必专门引入多个新的类来进行管理;当增加一个新的产品族(品牌)时不需要修改原代码,满足开闭原则;2、缺点:当产品族(品牌)中需要增加一个新的产品时,所有的工厂类都需要进行修改。三.何时使用1:系统中有多个产品族,原创 2020-09-05 16:21:53 · 232 阅读 · 0 评论 -
设计模式之深入理解工厂方法模式
对于工厂模式大家都是耳熟能详的,但是发现大家对工厂模式的叫法比较混乱,我先明确一下概念。工厂模式分为“工厂方法模式”和“抽象工厂模式”,此两种模式是属于Gof23种经典设计模式的。平时大家所说的“工厂模式“其实就是指“工厂方法模式”,工厂方法模式还可以退化为“简单工厂模式”,“简单工厂模式”并不属于Gof23中经典设计模式。本文将介绍工厂方法模式。一.定义定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。二.特点具体产品和具体工厂一 一对应三.优缺点1:优点用户原创 2020-08-22 13:46:53 · 175 阅读 · 0 评论 -
设计模式之深入理解观察者模式
本篇文章分为两部分,其中第一部分介绍什么是观察者模式,第二部分介绍观察者模式值得思考的地方。第一部分-观察者模式介绍一.定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。二.解决的问题一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。三.使用场景一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知四原创 2020-08-09 01:17:29 · 170 阅读 · 0 评论 -
设计模式之深入理解适配器模式
整体思路是这样的,第一部分介绍什么是适配器模式,第二部分介绍适配器模式值得思考的地方。第一部分-适配器模式介绍一.定义1:定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。2:分类:适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。二.解决的问题主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。原创 2020-07-25 10:59:57 · 164 阅读 · 0 评论 -
设计模式之深入理解策略模式
本篇文章分为两部分,其中第一部分介绍什么是策略模式,第二部分介绍策略模式值得思考的地方。第一部分-策略模式介绍一.策略模式定义该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。二.优点1、多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句(if else)。2、策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。3、策略模式可以提供相同行为的不同实现,客户可以根据不同时间或原创 2020-07-15 23:12:46 · 188 阅读 · 0 评论 -
如何选择单例模式和静态类
某一天感觉单例模式和静态类好像呀,一个是只创建了一个对象,另个一是不需要创建对象,那么问题来了,我们该如何选择使用单例模式还是静态类呢?下面将做讲解:一.二者之间的区别1、区别如下表所示:2、单例模式对于静态类主要优点是面向对象:单例可以继承一个基类实现多态;实现一个接口,提供不同的功能;二.如何选择1:当需要支持面向对象的功能时,选择单例,例如:管理状态(类的字段)2:如果仅仅是将一堆静态方法存储到一起,则选择静态类三.使用案例1:单例模式:Java运行时(java.lang.原创 2020-07-12 00:42:06 · 797 阅读 · 0 评论 -
设计模式之深入理解单例模式(.net)
都说单利模式是最简单的设计模式,但是我们对这个设计模式理解有多少,今天来聊一下。一.定义和特点1、定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。2、特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;二.解决的问题一个全局使用的类频繁地创建与销毁。因为频繁的创建与销毁对象,会占用内存开销,还会影响程序性能。三.使用场景1:操作系统中的文件系统。2:多线程中的线程池。3:显卡的驱动程序对象。4:打印机的后台处理原创 2020-07-10 23:25:19 · 418 阅读 · 0 评论 -
类与类之间的关系和耦合度
写了很多年代码,都没有考虑过类之间的关系,大家了解比较多的是继承关系,其实还有很多其他关系我们也使用了,但是并没有一个明确的概念,还有类之间的耦合度也不是很清楚,接下来介绍类和类之间的关系。在软件系统中,类不是孤立存在的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。依赖关系依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方原创 2020-06-30 21:19:46 · 7324 阅读 · 0 评论 -
设计模式六大原则---迪米特法则(降低耦合度)
一.定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因为在经典著作《程序员修炼之道》(The Pragmatic Programmer)提及而广为人知。迪米特法则的定义是:只与你的直接朋友交谈,原创 2020-06-26 23:23:30 · 1839 阅读 · 0 评论 -
设计模式六大原则---接口隔离原则(避免大而全的接口)
一.定义2002 年罗伯特·C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The dependency of one class to another one should depend on the smallest possible interface)。以上两个定义的含原创 2020-06-26 19:05:23 · 518 阅读 · 0 评论 -
设计模式六大原则---开闭原则(开发扩展、关闭修改)
定义开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。这里的软件实体包括以下几个部分:1、项目中划原创 2020-06-25 23:52:40 · 560 阅读 · 0 评论 -
设计模式六大原则---依赖倒置(面向抽象编程)
依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。定义依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depend upon原创 2020-06-25 14:06:31 · 335 阅读 · 0 评论 -
设计模式六大原则---里氏替换(类继承)
一.定义1:里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supertype原创 2020-06-24 22:51:53 · 403 阅读 · 0 评论 -
设计模式六大原则---单一职责(高内聚)
经常跟同事争论代码哪里写的不对,只是知道不对,却不 能说明白为什么不对,因此意识到需要增加理论知识的研究,今天来分享一下设计模式六大原则之一的“单一职责”。一.概念1:通过看书和查资料,对于单一职责的定义大体上是这样的:对于类来说,一个类只做一件事。但是在日常开发过程中,我们发现,很少有一个类只做一件事的,因此我更倾向于如下这个定义:一个类负责一个功能领域中的相应职责。2:另外,单一职责也同样适用于方法,对于方法来说,一个方法只做一件事。3:单一职责侧重点是高内聚,而剩下的五个原则侧重点是低耦合和扩原创 2020-06-24 00:49:38 · 819 阅读 · 0 评论