
设计模式-JAVA
记录学习设计模式课程 的笔记
「已注销」
这个作者很懒,什么都没留下…
展开
-
设计模式之策略模式(Strategy Pattern)
策略模式的定义与特点策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要优点如下。多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。策略模式提供了一系列的...原创 2020-03-24 00:59:11 · 243 阅读 · 0 评论 -
设计模式之状态模式(State Pattern)
状态模式的定义与特点状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式是一种对象行为型模式,其主要优点如下。状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对...原创 2020-03-22 15:54:47 · 208 阅读 · 0 评论 -
设计模式之备忘录模式(Memento Pattern)
模式的定义与特点备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。备忘录模式是一种对象行为型模式,其主要优点如下。提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够...原创 2020-03-22 01:52:47 · 157 阅读 · 0 评论 -
设计模式之中介者模式(Mediator Pattern)
模式的定义与特点中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式,其主要优点如下。降低了对象之间的耦合性,使得对象易于独立地被复用。将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。...原创 2020-03-22 01:15:46 · 231 阅读 · 0 评论 -
设计模式之观察者模式(Observer Pattern)
模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。它的主要缺点如下...原创 2020-03-21 18:26:53 · 201 阅读 · 0 评论 -
设计模式之迭代器模式(Iterator Pattern)
迭代器模式的定义与特点迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。增加新的聚合类和迭代器类都很方便,无须修改原有代...原创 2020-03-21 17:41:31 · 174 阅读 · 0 评论 -
设计模式之访问者模式(Visitor Pattern)
模式的定义与特点访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。访问者(Visitor)模式是一种对象行为型模式,其主要优点如下。扩展性好。能够在不修改对象结构中的元素的情况...原创 2020-03-21 12:17:25 · 142 阅读 · 0 评论 -
设计模式之命令模式(Command Pattern)
命令模式的定义与特点命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式的主要优点如下。降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对...原创 2020-03-21 11:30:40 · 225 阅读 · 0 评论 -
设计模式之模板方法模式(Template Method Pattern)
模式的定义与特点模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。该模式的主要优点如下。它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。它在父类中提取了公共的部分...原创 2020-03-20 22:08:11 · 207 阅读 · 0 评论 -
设计模式之享元模式(Flyweight Pattern)
享元模式的定义与特点享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。其主要缺点是:为了使对象可以共享,需要将一些不能共享的状态外部化,这...原创 2020-03-20 19:13:06 · 163 阅读 · 0 评论 -
设计模式之外观模式(Facade Pattern)
外观模式的定义与特点外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观(Facade)模式是“迪米特法则”的典型应用,它有以下主要优点。降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用...原创 2020-03-20 18:24:38 · 270 阅读 · 0 评论 -
设计模式之组合模式(Composite Pattern)
组合模式的定义与特点组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。组合模式的主要优点有:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;更容易在组合体内加入新的对象,客户端不会因为加入...原创 2020-03-20 15:36:37 · 182 阅读 · 0 评论 -
设计模式之装饰者模式(Decorator Pattern)
装饰模式的定义与特点装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂...原创 2020-03-20 14:51:20 · 144 阅读 · 0 评论 -
设计模式之桥接模式(Bridge Pattern)
桥接模式的定义与特点桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接(Bridge)模式的优点是:由于抽象与实现分离,所以扩展能力强;其实现细节对客户透明。桥接模式的结构与实现可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。模式的结构桥接(Bridg...原创 2020-03-19 14:50:03 · 266 阅读 · 0 评论 -
设计模式之适配器模式(Adapter Pattern)
模式的定义与特点适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。该模式的主要优点如下:客户端通过适配器可以透明地调用目标接口。复用了现存的类,程序员不需...原创 2020-03-19 13:28:14 · 214 阅读 · 0 评论 -
Java设计模式之代理模式(Proxy Pattern)
代理模式的定义与特点代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;其主要缺点是:...原创 2020-03-02 14:14:34 · 181 阅读 · 0 评论 -
Java设计模式之建造者模式(Builder Pattern)
模式的定义与特点建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。该模式的主要优点如下:各个具体的建造者相互独立,有利于系统的扩展。客户端不必知道产品内部组成的...原创 2020-03-02 12:22:22 · 195 阅读 · 0 评论 -
设计模式之原型模式(Prototype)
基本介绍原型模式(Prototype)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()类图原理结构图说明Prototype:原...原创 2020-02-12 23:05:30 · 201 阅读 · 0 评论 -
类之间的六大关系
类之间的关系依赖泛化(继承)实现关联聚合组合依赖关系只要类中用到了对方,它们之间就存在依赖关系。如果没有对方,连编译都通过不了。剩余5种关系都是依赖关系的特例。package com.atguigu.uml.dependence;public class PersonServiceBean { private PersonDao personDao;// 类 pub...原创 2020-02-12 12:50:10 · 535 阅读 · 0 评论 -
Java基础之异常处理
异常: 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.异常体系异常机制是为了帮助程序员找到程序中的问题,异常的根类是java.lang.Throw...原创 2020-02-09 20:01:50 · 170 阅读 · 0 评论 -
设计模式之单例模式(Singleton pattern)
单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。实现方式饿汉式(静态常量)构造器私有化(防止new)类的内部创建对象向外暴露一个静态的公共方法。getInstancspackage com.atguigu.singleton.type1;public class S...原创 2020-02-03 15:58:03 · 126 阅读 · 0 评论 -
设计模式(Design pattern)简介
设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用经验,模式不是代码,而是某类问题的通用解决方案。设计模式代表了最佳的实践,这些解决方案是众多软件开发人员经过相当长的一段时间的实验和错误总结出来的。设计模式的本质是提高软件的维护性,通用性和扩展性,并降低软件的复杂度。设计模式分类设计模式分为三种类型,共23种创建型模式单例模式抽象工厂模式原型模式建造者模...原创 2020-02-03 15:13:08 · 256 阅读 · 0 评论 -
设计模式7大原则之合成复用原则(Composite Reuse Principle)
内容尽量使用合成/聚合的方式,而不是继承。合成(组合)与聚合辨析组合:整体与部分的关系,且类的实例与其内部的对象在生命期上保持一致,同时创建和销毁。另外,组合不允许有组合回路,否则编译不报错,但是运行时将会出现StackOverflowException 的异常导致程序终止聚合:整体与部分的关系,且类的实例与其内部的对象不具有生命期的一致性,只是对另一个对象的引用,并不拥有其生命周期...原创 2020-02-03 11:11:59 · 207 阅读 · 0 评论 -
设计模式七大原则之迪米特法则(Demeter Principle)
基本介绍一个对象应该对其他对象保持最少的了解类与类的关系越密切,耦合度越大迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管有多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public犯法,不对外泄露任何信息迪米特法则还有个更简单的定义:只与直接的朋友通信直接的朋友:每个对象都会有与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就...原创 2020-02-02 10:32:27 · 379 阅读 · 0 评论 -
设计模式七大原则之开闭原则
OCP(Open Close Principle)开闭原则是编程中最基础、最重要的设计原则。编程中遵循其他原则,以及使用设计模式的目的就是使程序符合开闭原则。一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。应用示例不满足OCP的代...原创 2020-02-01 20:40:10 · 339 阅读 · 0 评论 -
设计模式七大原则之里氏替换原则
里氏替换原则背景继承关系包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然不强制子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,使得程序的可移植性降低,增加对象间的耦合性,如果一个类背其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且...原创 2020-02-01 20:01:12 · 186 阅读 · 0 评论 -
设计模式七大原则之依赖倒置原则
依赖倒转原则(Dependence Inversion Principle)高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转的中心思想是面向接口编程设计思想:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。 Java中,抽象指的是接口或抽象类,细节就是具体的实现类使用接口或抽象类的目的是制定好规...原创 2020-02-01 16:26:05 · 122 阅读 · 0 评论 -
设计模式的7大原则之二
我又想了想,还是要有具体的例子 否则本来就很抽象的东西会更难理解从依赖倒转原则开始 我会结合课程资料中的例子来记录。这部分内容比较抽象,在这里先罗列基本概念,方便以后查阅。具体编程案例会在具体的设计模式中阐述设计模式的目的让程序具有更好的:代码重用性可读性可扩展性可靠性使程序呈现高内聚低耦合的特性设计模式的七大原则单一职责原则接口隔离原则依赖倒转(倒置)原则里氏...原创 2020-02-01 13:26:00 · 98 阅读 · 0 评论