设计模式
魔舞清华-方
这个作者很懒,什么都没留下…
展开
-
设计模式-策略模式
策略模式定义策略模式定义了一系列的算法,并将每一个算法都封装起来,使得每个算法可以互相替代,使算法本事和使用算法的客户端分割开来,相互独立。初看策略模式的定义,似乎似懂非懂的感觉,我们需要一个具体的应用场景来对策略模式进行解释。比如我们去旅行,我们可以选择很多路线,我们就可以把每一种路线看做是一种算法也就是一种策略。策略模式类图上图中可以看到,客户context有成员变量...原创 2019-12-10 11:38:38 · 165 阅读 · 0 评论 -
设计模式-状态模式
状态模式定义状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类,属于行为型模式状态模式类图环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具...原创 2019-12-10 10:03:41 · 162 阅读 · 0 评论 -
Spring中用到的设计模式
Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式?控制反转(IoC)和依赖注入(DI)IOC(Inversion of Control,控制翻转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(Spri...原创 2019-12-09 15:53:31 · 125 阅读 · 0 评论 -
设计模式-访问者模式及双分派
访问者模式访问者顾名思义,就是要访问一个对象的内部结构,那他是怎么样访问的呢,我们看看定义定义封装一些作用于某种数据结构中的个元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素新的操作()。定义解释(若对定义的解释不好理解,请对照举得例子来加深理解)初看访问者的定义,我们很难明白他在说什么,我们可以对定义这么理解:有这么一个操作,它是作用于一些元素(要操作的...原创 2019-12-09 14:54:20 · 513 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式定义定义了一个中介对象来封装对象之间的交互,中介者模式使各个对象不需要显示的相互引用,从而使得其耦合性松散,而且可以独立的改变他们之间的交互。中介者模式的定义很好理解,即对象之间不再相互的调用,而统一由一个对象来管理他们之间的交互。中介者模式类图Mediator:中介者定义一个接口用于与各同事(Colleague)对象通信。ConcreteMediator:具体中...原创 2019-12-09 10:28:15 · 77 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式观察者定义观察者模式又被称为发布订阅模式。它定义了对象之间一对多的依赖,当一个对象状态发生改变时,它的所有依赖者都会收到通知并自动更新相关内容观察者的定义很容易理解不做过多解释,即发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。观察者类图Subject:被观察者接口,里面定义了几个方法需要具体的观察者去实现。WeatherData:具体的...原创 2019-12-07 18:10:55 · 92 阅读 · 0 评论 -
设计模式-迭代器模式
迭代器模式概念:提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式概述在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上进行操作”提供了可能。使用面向对象技术将这种遍...原创 2019-12-06 10:49:59 · 127 阅读 · 0 评论 -
设计模式-命令模式
命令模式命令模式是将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化,用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如...原创 2019-12-05 14:42:41 · 90 阅读 · 0 评论 -
设计模式-享元模式
享元模式说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。基本介绍享元模式又叫蝇量模式:运用共享技术有效的支持大量细粒度对象享元模式长用于底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免了重复创建。如果没有我们需要的则...原创 2019-12-05 11:30:56 · 144 阅读 · 0 评论 -
设计模式-外观模式
外观模式定义外观模式又叫门面模式,它为子系统中的一组接口提供了一个一致的界面Facade模式定义了一个高层接口,这个接口使得子系统更加容易的使用。原理图外观类:为了调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给对应的子系统对象。子系统集合:指模块或者子系统,处理Facade对象指派的任务,他是功能实际的提供者。调用者(Client):...原创 2019-12-05 09:49:47 · 81 阅读 · 0 评论 -
设计模式-组合模式
组合模式基本介绍组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这类设计模式属于结构型的设计模式组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象成员角色Component(抽象构件):它可以是接口或...原创 2019-12-03 14:56:02 · 142 阅读 · 0 评论 -
设计模式-装饰者模式
装饰者模式定义装饰者模式:动态的将新功能附加到对象上,在对象的功能拓展方面,它比继承更有弹性,装饰者模式也体现了OCP原则特点1.装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互2.装饰对象包含一个真实对象的引用3.装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。4.装饰对象可以在转发这些请求以前或以后增加一些附...原创 2019-12-03 11:14:01 · 109 阅读 · 0 评论 -
设计模式-桥接模式
桥接模式定义将抽象部分与它的实现部分分离,使它们都可以独立地变化也许光看定义我们看不出什么,我们来看下面这个类图:这个是传统方式解决手机操作问题,上面的类图很明了,一个手机类,手机又有折叠类的手机和直立手机等,然后买个类型的手机又有华为牌子的,小米等牌子的。这样设计所带来的问题:拓展性问题(类爆炸),如果我们需要新添加一种类型的手机(旋转手机),就需要添加各个品牌手机类,...原创 2019-12-02 16:57:26 · 127 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式基本介绍将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适...原创 2019-12-02 14:59:54 · 110 阅读 · 0 评论 -
设计模式 - 建造者模式
建造者模式定义建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。初看建造者的定义可能还有点不是很明白,简单的讲就是将一个个简单的对象一步步构建成一个复杂的对象,举个生活的例子,比如盖房子,盖房子一般简单分为打地基,砌墙体,最后是盖屋顶等步骤。但是对于我们而言我们可能不需要具体的去关心房子是怎么盖的,我们只需要告诉售楼的我们需要一个什么房子就可以,像这样,...原创 2019-12-02 11:55:44 · 156 阅读 · 0 评论 -
设计模式-原型模式
原型模式定义通过原型实例指定创建对象的种类,并通过拷贝这些原型实例构建新的对象(简单的说就是对象自己拷贝自己,是一种更快,更省资源的创建新对象的方法)下面我们来看克隆羊的代码先定义一只羊实现Cloneable接口并覆盖Object的clone()方法:public class Sheep implements Cloneable{ private String name; ...原创 2019-11-29 17:07:57 · 83 阅读 · 0 评论 -
23种设计模式-工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
工厂模式在讲工厂模式的时候,我将讲一个早餐店创业故事来慢慢的引入简单工厂模式,工厂方法模式和抽象工厂模式。https://blog.csdn.net/Olive_ZT/article/details/78861388...原创 2019-11-29 15:23:04 · 241 阅读 · 0 评论 -
23种设计模式-最全单例模式(八种)
单例模式介绍所谓类的单例设计模式,就是采取一定的方法保证整个软件系统中对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。单例模式有八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式 (线程安全,同步方法)懒汉式(线程不安全,同步代码块)双重检查静态内部类枚举饿汉式(静态常量)步骤如下:构造器私有化类的内部创建一个...原创 2019-11-28 11:36:28 · 265 阅读 · 0 评论 -
设计模式-七大设计原则(详细版)
前言:今天给大家分享java的设计模式本文会从为什么使用设计模式编写软件过程中,我们面临着来自耦合性,内聚性以及可维护性,可拓展性,重用性,灵活性等多方面的挑战,而设计模式是为了让程序软件具有更好的以下几个方面:代码重用性(相同的代码不用多次编写);可读性(编程的规范性,便于其他程序员的阅读和理解);可拓展性(当需要添加新的功能时,非常的方便也称为可维护性);可靠性(当我们添加...原创 2019-11-25 22:32:19 · 1299 阅读 · 0 评论 -
设计模式-模板方法设计模式
定义定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。模板方法设计模式主要点定义一个抽象类(Abstract Class):该抽象类负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。基本方法:是整个算法中的一个步骤...原创 2019-05-28 14:43:10 · 118 阅读 · 0 评论 -
java适配器模式
适配器模式概述设计模式本质上就是“SOLID设计原则”在实际应用中的具体体现,我们在实际开发中要尽量面向抽象编程、面向接口编程。顾客->菜单<-厨师,顾客面向菜单点菜,厨师面向菜单做菜,顾客点的菜必须在菜单范围内,厨师能做的菜也必须在菜单范围内,菜单即接口,这就是面向接口编程思想,做项目的时候,先定义接口,再定义实现接口的类,才算是面向抽象编程、面向接口编程。适配器模式的定义:将某...原创 2019-05-28 11:52:45 · 1228 阅读 · 0 评论 -
设计模式-代理模式(静态代理,JDK动态代理,CGLIB代理)
代理模式代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.举个例子来说明代理的作用:如果我们公司有一个产品需要找一个明星来代言,那么我们并不是直接联系明星本人,而是联系明星的经纪人.明星就是一个目标对象,他只要负责代言活动,而其他的一些琐碎事情就交给他的代...原创 2019-05-27 19:28:51 · 130 阅读 · 0 评论