![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA设计模式
横石拦浪
这个作者很懒,什么都没留下…
展开
-
JAVA设计模式小结
设计模式让程序具有更好的代码重用性、可读性、可扩展性、可靠性,使得程序具有高内聚、低耦合的特性。设计模式的7大原则:开闭原则(Open Closed Principle,OCP)单一职责原则(Single Responsibility Principle, SRP)里氏替换原则(Liskov Substitution Principle,LSP)依赖倒转原则(Dependency Inv...原创 2019-12-29 18:45:47 · 137 阅读 · 0 评论 -
JAVA设计模式笔记(原型模式)
原型模式问题引出:现在有一个羊对象,现在需要设计程序将这只羊克隆,即创建相同的对象。常见的思路是重复执行new操作,缺点也是显而易见的,每次创建新的对象时,都要获取原对象的属性传入到构造器中,效率较低,使用原型模式可以解决这个问题。原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式的角色及职责:1)Prototype:原型类,声明一个克隆自己的接口2)C...原创 2019-12-29 03:22:45 · 91 阅读 · 0 评论 -
JAVA设计模式笔记(访问者模式)
访问者模式,是行为型设计模式之一。访问者模式封装一些作用于某种数据结构各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素新的操作。访问者模式主要将数据操作和数据结构分离,解决数据结构和操作耦合性的问题。访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口。类图:(1)Visitor:接口或者抽象类,它定义了对每一个元素(Element)访问的行为,它的参数...原创 2019-12-28 19:11:30 · 158 阅读 · 0 评论 -
JAVA设计模式笔记(中介者模式)
中介者模式,用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显氏地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。中介者模式属于行为型的模式,使得代码易于维护。比如MVC模式,C就是M和V之间的中介。中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式的角...原创 2019-12-28 18:28:02 · 89 阅读 · 0 评论 -
JAVA设计模式笔记(解释器模式)
解释器模式解释器模式的角色和职责:1)Context:环境角色,含有解释器之外的全局信息。2)AbstractExpression:抽象表达式,声明一个抽象的解释操作。这个方法为抽象语法树中所有的节点所共享。3)TerminalExpression:终结符表达式,实现与文法中与终结符相关的解释操作。4)NonTerminalExpression:非终结符表达式,为文法中的非终结符实现解...原创 2019-12-28 00:53:27 · 83 阅读 · 0 评论 -
JAVA设计模式笔记(状态模式)
状态模式:主要是用来解决对象在多种状态转换的时候,需要对外输出不同行为的问题,状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。类图1)Context类为环境角色,用于维护State实例,这个实例用于定义当前状态2)State是抽象状态角色,定义一个接口封装与Context的一个特点接口相关行为3)ConcreteSt...原创 2019-12-28 00:37:55 · 134 阅读 · 0 评论 -
JAVA设计模式笔记(策略模式)
策略模式:定义算法族,分别封装起来,让它们可以互相替换,此模式让算法的变化独立于使用算法的客户。算法体现了多个设计原则:一、把变化的代码从不变的代码中分离出来。二、针对接口编程而不是具体类。三、多用聚合和组合而不是继承类图案例有很多种鸭子,分别有飞翔、游泳等动作,现在需要设计程序去执行鸭子的动作。传统的方案是使用继承,即定义一个鸭子抽象类和动作的共有和抽象方法,然后让鸭子子类去继承...原创 2019-12-27 18:59:16 · 132 阅读 · 0 评论 -
JAVA设计模式笔记(职责链模式)
职责链模式:又叫责任链模式,为请求创建了一个接收者对象的链,使得多个对象都有机会处理请求,从而对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含另一个接收者的引用。如果一个对象可以包含对另一个接收者的引用,如果一个对象不能处理请求,那么它会把相同的请求传给下一个接收者。类图职责链的模式和职责:1)Handler:抽象的处理者,定义了一个处理请求的接口,同时包含了另外的Handl...原创 2019-12-27 01:25:59 · 76 阅读 · 0 评论 -
JAVA设计模式笔记(备忘录模式)
备忘录模式:在不破坏对象的封装性的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将对象恢复到原先保存的状态。备忘录模式属于行为型的模式。...原创 2019-12-25 17:45:02 · 118 阅读 · 0 评论 -
JAVA设计模式笔记(观察者模式)
观察者模式的定义:在对象之间定义了一对多的依赖,当一个对象改变状态,依赖它的对象会收到通知并自动更新。类图观察者模式的角色、职责:抽象被观察者角色:一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。具体被观察者角色:一个具体的主题,在具体主题的内部状态改变时,对所有登记过的观察者发出通知。抽象观...原创 2019-12-24 17:34:34 · 81 阅读 · 0 评论 -
JAVA设计模式(迭代器模式)
迭代器模式提供了遍历集合的统一接口,用一致的方式遍历元素,而不需要知道集合元素的统一表示原创 2019-12-21 02:56:32 · 84 阅读 · 0 评论 -
JAVA设计模式笔记(命令模式)
命令模式,在软件设计中,我们经常需要发送命令给一些对象,但是不知道请求的接收者是谁,也不知道被请求的操作是哪一个,我们只需要在程序中指定具体的请求接收者即可,可以使用命令模式来设计,命令模式就是将请求封装成对象,将动作请求者和动作执行者解耦。类图:命令模式的对象和职责:1)Invoker:命令的调用者2)Command:命令角色,所有需要执行的命令都在这里3)Receiver:接收者角...原创 2019-12-20 02:34:39 · 116 阅读 · 0 评论 -
JAVA设计模式笔记(模板模式)
模板模式,在一个抽象类定义了执行它方法的模板,它的子类可以按需重写方法的实现,但是调用需按抽象类中定义的方式执行,模板模式属于行为型的设计模式。案例打豆浆操作,可以先定义打豆浆的模板,有共有的方法和抽象方法,子类只需要实现抽象方法即可,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。public abstract class Soyamilk { void sele...原创 2019-12-19 19:13:44 · 135 阅读 · 1 评论 -
JAVA设计模式笔记(享元模式)
享元模式,也叫蝇量模式:运用共享技术有效支持大量细粒度的对象。享元模式能够解决重复对象的内存浪费问题,对象放在一个池子中,需要的时候就取出来,不会重复创建对象。享元模式的类图:享元模式的角色:Flyweight:抽象的享元角色,需要将对象的信息划分为内部状态和外部状态,并定义接口。ConcreteFlyweight:具体的享元角色UnsharedConcreteFlyweight:不可...原创 2019-12-16 19:02:12 · 85 阅读 · 0 评论 -
JAVA设计模式笔记(外观模式)
外观模式:为子系统的一组接口提供了一致的界面,用来屏蔽内部子系统的细节,使得调用端只需跟接口发生调用,而无需关心内部细节。外观模式的角色:1)外观类:为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当的子对象。2)调用者:外观接口的调用者3)子接口的集合:模块或者子系统,接受调用者指派的任务,功能的实际提供者案例家庭影院,有许多灯、电视、播放机等...原创 2019-12-14 19:50:45 · 83 阅读 · 0 评论 -
JAVA设计模式笔记(组合模式)
组合模式又叫整体和部分模式,它创建了对象组的树形结构,将对象组合成树形结构以表示“整体和部分”的层次关系。组合模式属于结构形模式。组合模式的角色:1、抽象构件(Component)角色:这是一个抽象角色,它给参加组合的对象定义出公共的接口及其默认行为,可以用来管理所有的子对象。2、树叶构件(Leaf)角色:叶子节点没有子节点3、树枝构件(Composite)角色:树枝构件类给出所有的管理...原创 2019-12-13 20:00:04 · 129 阅读 · 0 评论 -
JAVA设计模式笔记(装饰者模式)
装饰者模式:装饰者模式对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。结构角色抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。具体构件(ConCreteComponent)角色:定义一个将要接受附加责任的类。装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。具体装饰(Co...原创 2019-12-11 18:09:27 · 145 阅读 · 0 评论 -
JAVA设计模式笔记(桥接模式)
有这样一个需求:不同手机有不同款式同时也有不同品牌,要编程实现手机的功能(开机、关机、打电话等)普通的思路是创建一个phone方法,让款式类去继承Phone方法,然后再让品牌类去继承款式类这种方法存在的问题是:1、扩展性不好,增加一个手机的样式,就得增加所有品牌的类,或者增加一个品牌就得在所有样式下增加这个品牌的类。2、违反了单一指责原则,增加一个样式就得增加所有品牌。我们需要桥接模式...原创 2019-12-08 01:16:35 · 134 阅读 · 0 评论 -
JAVA设计模式笔记(适配器模式)
适配器模式是一种结构型设计模式,主要目的是让原本因接口不匹配不能一起工作的两个类可以协同工作,实现兼容性。适配器模式主要分为三类:类适配器模式、对象适配器模式和接口适配器模式。适配器的三种角色:源(src):需要被适配的对象适配器(adapter):连接被适配的对象和目标的中间对象。目标(dst):需要得到的目标类适配器适配器需要继承源并实现目标接口下面实现将220V电压转成5V电...原创 2019-12-07 16:10:35 · 98 阅读 · 0 评论 -
JAVA类与类之间的关系
JAVA类与类之间的关系有六种:依赖、关联、聚合、组合、实现、泛化依赖:依赖简单的说是一个类中使用到了另一个类,如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等。而这种关系是具有偶然性的、临时性的、非常弱的。关联:关联是一种强依赖关系,两个类之间的关系是平等的,比如说我和我的朋友。关联关系一般使用成员变量来实现,有时也用方法形参的形式实现。聚合:是关联关系的一种,表示的是整体...原创 2019-12-07 16:43:19 · 275 阅读 · 0 评论 -
JAVA设计模式笔记(建造者模式)
有一个建房子项目需求:1)需要建一座房子:过程为打桩、砌墙、盖房顶2)房子的种类有多种多样,但是建房子的过程是相同的常见的思路是:创建一个房子抽象类,抽象类中有打桩、砌墙、盖房顶的抽象方法,然后房子的子类去实现这些方法,最后在客户端中使用即可。抽象类public abstract class AbstractHouse { abstract void buildBasic();...原创 2019-12-06 17:23:20 · 122 阅读 · 0 评论 -
JAVA设计模式笔记(简单工厂模式)
有一个水果加工工厂,我们的需求是实现加工水果的功能。常见的做法是创建一个水果抽象类,写一个抽象的加工方法,然后创建具体的水果类去继承抽象类,再去实现抽象方法,最后客户端再去新建对象实例。public abstract class Fruit { abstract void make();}public class Apple extends Fruit{ @Override...原创 2019-12-04 03:36:17 · 194 阅读 · 0 评论 -
Java设计模式笔记(单例模式)
**单例模式:**采用一定的方法在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供只提供一个获得其对象的方法。单例模式的几种实现模式:1)饿汉式(静态常量)2)饿汉式(静态代码快)3)懒汉式(线程不安全)4)懒汉式(线程安全,同步方法)5)懒汉式(线程安全,同步代码块)6)双重检查7)静态内部类8)枚举饿汉式与懒汉式:饿汉式:在类加载的时候就创建实例懒汉式:需要...原创 2019-11-30 19:23:14 · 125 阅读 · 0 评论