设计模式
BayMax_39
talk is cheap,show me the code.
展开
-
设计模式——设计模式的六大原则
1.设计模式的目的与思想设计模式目的代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚, 低耦合的特性设计模式思想找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在...原创 2019-09-09 13:49:32 · 197 阅读 · 0 评论 -
设计模式——模板方法模式
1.模式的定义与特点模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。我的理解:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。此时可以用一个抽象类将这些步...原创 2019-09-15 10:56:14 · 108 阅读 · 0 评论 -
设计模式——命令模式
1.命令模式的定义与特点命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。我的理解:命令模式主要是消除请求发送者和请求接收者的耦合。请求发送者主要负责发送命令,请求接受者主要负责执行命令,因此命令就是两者的中间桥梁。eg.人使用遥控器开灯和关灯的操作:遥...原创 2019-09-15 13:04:02 · 97 阅读 · 0 评论 -
设计模式——访问者模式
1.访问者模式的定义与特点访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。我的理解:对于某一个景点,青年人对它评价,中年人对它评价,老年人对它评价,按照以前的思考,这些评价是主观...原创 2019-09-16 09:48:38 · 170 阅读 · 0 评论 -
设计模式——迭代器模式
1.迭代器模式的定义与特点迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。我的理解:迭代器模式就是为特定的容器配备特定的访问方法,迭代器知道内部数据是以怎样的方式存储,并且迭代器也会得到类的具体容器(构造器传入),所以可以访问内部数据。作为使用者,就不需要太关心类的内部结构,只要得到该类的迭代器就可...原创 2019-09-16 10:38:50 · 94 阅读 · 0 评论 -
设计模式——观察者模式
1.观察者模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。我的理解:我觉的观察者模式说的不够准确,而应该叫发布者模式,因为它的思想就是:我的一个状态改变了,我就要让所有观察我的对象知道。向所有观察我的人发布推送。所以...原创 2019-09-16 11:09:41 · 125 阅读 · 0 评论 -
设计模式——中介者模式
1.中介者模式的定义与特点中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。我的理解:将网状结构变为星型结构。当某个类需要用到其它类的方法,与该类发生依赖,这种情况多了以后,会出现一个复杂的网状结构。解决办法是可以定义一个中介者,它可以完成类的相互调用而不...原创 2019-09-17 09:30:26 · 109 阅读 · 0 评论 -
设计模式——备忘录模式
1.备忘录模式的定义与特点备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。我的理解:备忘录模式就是后悔药。它将对象原先的属性记录下来,等到“后悔”的时候就可以回到原来的状态。当然有了备忘录,还要有一个使用备忘录的人,那么还需要一个管理者(CareTaker)。e...原创 2019-09-17 11:05:49 · 101 阅读 · 0 评论 -
设计模式——解释器模式
1.模式的定义与特点解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。我的理解:关于解释器模式,还需要设计到编译原理的知识。而且只是适用于当语言的文法较为简单,且执行效率不是关键问题时。因此在这里不做过多介绍...原创 2019-09-17 11:26:14 · 102 阅读 · 0 评论 -
设计模式——状态模式
1.状态模式的定义与特点状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。我的理解:由于环境的变化,状态也会随之变化。就比如同样一个人,他在学校是学生,他在商店是顾客,他在家里是子女,他来适应环境,而并非环境强迫他做出改变。状态在环境中有一个初始状态,但是会根据传入的环境,自动的找到符合环境的当前状态,每一...原创 2019-09-18 10:50:29 · 145 阅读 · 0 评论 -
设计模式——策略模式
1.策略模式的定义与特点策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。我的理解:其实策略模式就是将方法封装,然后你就可以指定策略来执行,而不再需要通过if…else判断。就比如,大...原创 2019-09-18 11:18:40 · 161 阅读 · 0 评论 -
设计模式——代理模式
1.代理模式的定义与特点代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。我的理解:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。其实这种很像装饰者模式,但是又有所不同...原创 2019-09-15 09:41:38 · 76 阅读 · 0 评论 -
设计模式——享元模式
1.享元模式的定义与特点享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。我的理解:“享”就表示共享,“元”表示对象。享元模式是将一些特征相差不大,但是在程序运行时又要不得不一直创建的对象保存在资源池里。当该对象需要创建时,判断资源池中是否有所需的对象,如果...原创 2019-09-14 22:50:32 · 124 阅读 · 0 评论 -
设计模式-UML类图关系(依赖、泛化、实现、组合、聚合)
1.UML类图UML——Unified modeling language UML( 统一建模语言 ),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML图的分类 用例图 静态结构图:类图、对象图、包图、组件图、部署图 动态行为图:交互图(时序图与协作图)、状态图、活动图UML类图本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于...原创 2019-09-07 12:42:34 · 863 阅读 · 0 评论 -
设计模式——单例模式
1.单例模式的定义与特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。单例模式有 3 个特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;我的理解:单例模式即最多只能创建该类的一个实例化对象,因此该类的构造函数必须私有化,对外只提供获取该对象的方法。2.单例模式的结构单例模式...原创 2019-09-12 11:37:02 · 96 阅读 · 0 评论 -
设计模式——原型模式
1.原型模式的定义与工作原理原型模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()我的理解:使用JDK提供的clo...原创 2019-09-12 13:19:31 · 100 阅读 · 0 评论 -
设计模式——工厂模式
首先需要明确的一点是:工厂模式的主要作用是创建与使用分离。1.简单工厂模式简单工厂模式是属于创建型模式,是工厂模式的一种。 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式。使用...原创 2019-09-13 09:50:22 · 120 阅读 · 0 评论 -
设计模式——建造者模式
1.建造者模式的定义建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。我的理解:就比如建房子,建房子的步骤大致相同,但是每一步具体步骤又有不同。建造者模式将建房子的的...原创 2019-09-13 16:12:36 · 97 阅读 · 0 评论 -
设计模式——适配器模式
1.适配器模式的定义适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。我的理解:其实问题就是,如何使两个不发生依赖的类A,B;A能调用到B中的方法。解决方法就是构建一个适配器,适配器从类B中获得方法,A从适配器中取想要的方法。适配器模式主要有:类适配器模式、对象适配器模式2.类适配器模式类适配器模...原创 2019-09-13 16:53:17 · 94 阅读 · 0 评论 -
设计模式——桥接模式
1.桥接模式的定义与特点桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。我的理解:就比如手机型号和手机品牌,如果使用继承的话,会得到如下如果将品牌作为接口,组合到手机中,得到如下:此时,抽象与实现分离,代码的扩展能力增强。2.桥接模式的结构桥接(Bridge)模式包含以下主要角色...原创 2019-09-14 09:53:50 · 106 阅读 · 0 评论 -
设计模式——装饰者模式
1.装饰者模式定义装饰者模式: 动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)。我的理解:举个例子,比如人的服装,人需要穿内衣和外套,内衣通常穿一件,而外套可以任意往上加,此时内衣就相当于要的对象(被装饰者),而外套就是要附加的功能(装饰者)。内衣确定的情况下,如何加外套呢?那就必须将内衣放在外套里。那么如果已经有了内衣和外套,还想再加外...原创 2019-09-14 10:24:09 · 95 阅读 · 0 评论 -
设计模式——组合模式
1.组合模式的定义与特点组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。我的理解:比如(学校——学院——系)这样一种结构模式:传统方案解决学校院系展示存在的问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的。实际上我们的要...原创 2019-09-14 10:56:53 · 116 阅读 · 0 评论 -
设计模式——外观模式
1.外观模式的定义与特点外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。我的理解:将很多类聚合到一个类中,该类可以拥有众多类的方法,向外提供了一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口...原创 2019-09-14 14:35:36 · 105 阅读 · 0 评论 -
设计模式——职责链模式
1.职责链模式的定义与特点责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。我的理解:职责链模式其实这就是一个向上找责任人的问题,比如你是任课老师,有学生向你请假,你不能处理这个问题,就去找班主任;班主任...原创 2019-09-18 11:39:14 · 133 阅读 · 0 评论