【10月21日】代理模式【10月21日】代理模式
设计模式
设计模式(Design Pattern)是一套反复被使用、多人知晓、经过分类编目的代码设计经验的总结
使用设计模式是为了可重复用代码、让代码更容易被他人理解、保证代码可扩展性和可维护性
通用设计模式有23个,每一个设计模式都是某一类经典问题的解决方案
设计模式的本质
...[2020/11/9]
PHP设计模式—适配器模式PHP设计模式—适配器模式
定义:
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
结构:
Target:目标接口,定义与客户端交互相关的接口,目标可以是具体的或抽象的类,也可以...[2020/11/9]
Refresh Clean CodeRefresh Clean Code
这是一本被前辈称赞, 另一个马丁的知名著作, 被赋予学习如何写出漂亮代码的教皇级手册, 最近(再)浏览, 有诸多感受.
总结一下就是如果你是新手, 可能看优秀的open source学习更好; 如果你是老手, 可能他说的东西要么你会觉得太啰嗦, 要么你会觉得例子太细节, 太教条, 无法...[2020/11/9]
C#设计模式-模板方法模式(Template Method)
概念
模板指一些可以套用的公共内容,例如网页模板是当网站中有许多页面版式色彩相同的情况下,将其定义为网页模板,并定义其中部分可编辑,部分不可编辑,那么在利用网页模板制作其他页面时就会很方便,不易出错。 在设计模式中,模板方法模式中模板和生活中模板概念非常类似,在一个抽象类中定义一个操作中...[2020/11/9]
设计模式—结构型模式设计模式—结构型模式
关注公众号获取更多资料
@目录设计模式—结构型模式代理模式适配器模式类适配器对象适配器扩展--双向适配器桥接模式装饰模式外观模式扩展享元模式组合模式扩展
设计模式—结构型模式
? 结构型模式描述如何将类或者对象按照某种布局组成更大的结构。组合关系或者聚合关系的耦合度比...[2020/11/9]
设计模式— 行为型模式
关注公众号获取更多资料
设计模式— 行为型模式
? 行为型模式描述的死程序运行时复杂的流程控制,描述了多个类或者对象之间怎样相互协调合作,涉及算法与对象之间的职责分配。
? 行为型模式是23中设计模式中最为庞大的,包括以下11中:
@目录设计模式— 行为...[2020/11/9]
23种GoF设计模式的分类23种GoF设计模式的分类
GoF设计模式一共有23个。一般可以按目的和作用范围来进行划分,具体划分方法如下:
第一,这些模式按目的(即完成什么样任务)来划分为创建型、结构型和行为型这三种模式:
创建型:用来创建对象。单例、原型、抽象工厂、建造者、工厂方法这五个都属于这一分类。这种类别起到了将对象的创建与其使用...[2019/11/11]
设计模式学习笔记
由 杨柳依 创建于2019年11月3日,最近更新于2019年11月8日
参考资料:大话设计模式 | 图解设计模式 | 菜鸟教程—设计模式
UML类图
【矩形框】代表一个类(Cla )。类图分三层:
第一层显示类的名称,如果是抽象类,则就用斜体显示;
第二层是类的特性,通...[2019/11/11]
23种GoF设计模式概述
23种GoF设计模式概述
在前面,我们对 GoF 的 23 种设计模式进行了分类,这里先对各个设计模式的功能进行简要介绍,以便有个大概了解。后面的章节再进行详细介绍。
创建型模式
关注于怎么创建对象的创建型模式,他们将对象的创建与使用相互分离,对象的使用者无需关心如何创...[2019/11/11]
【设计模式】工厂方法模式
0 简单工厂模式
0.0 简单工厂模式动机
考虑一个简单的软件应用场景,一个软件系统可提供多个外观不同按钮(如圆形、矩形按、菱形按钮等), 这些按钮都源自同一个父类,不过在继承父类后不同的子类修改了部分属性从而使得它们可呈现不同外观,如果希望在使用这些按钮时,不需要知道这...[2019/11/8]
设计模式 - 策略模式
在理解策略模式之前我们假设有这样一个需求场景:我们在写订单支付场景的代码时,客户可以选择多种支付方式,有银联支付、支付宝支付、微信支付、京东白条等等。然后我们就很可能就会编写出类似下面这样的代码:
/**
* 订单类,拥有一个支付方法
*
* @author eamon.zhan...[2019/11/7]
设计模式在Spring框架中的应用汇总
这篇文章主要介绍了设计模式在Spring框架中的应用汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在开始正文之前,请你先思考几个问题:
你项目中有使用哪些 GOF 设计模式
说一说 GOF 23 种设计模式的设计理念
说说 ...[2019/11/1]
通俗易懂设计模式解析——解释器模式
前言
今天我们来讲解释器模式【Interpreter Pattern】,如何理解这一个模式呢?一个简单的例子、中英文翻译器这个东西的作用是啥呢?将不知道的英文翻译成中文以便于理解、或者把中文翻译成英文来使用。其中目的也就是将语言进行翻译解释方便去理解使用。那么解释器模式呢?也有相似...[2019/10/29]
设计模式 - 委派模式
理解
首先委派模式不属于23种设计模式。
所谓委派,个人理解是:将为达到最终结果的事情交给其他人或中间人来干,我只要最终结果,其他的事情,由我委派的人来安排。
更直白的表达就是,比如,我们想要盖一栋楼房,盖完之后我要刷漆,这些事情我自己肯定不能做,所以我这时候就会去找一个“包工头”来...[2019/10/28]
Java的反射技术Java的反射技术
1、Java 反射技术
Java反射技术应用广泛,它能够配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法。这样可以大大增强Java的可配置性,如Spring IoC 的基本原理也是反射,当然Spring IoC 的代码要复炸得多,还有其他的技术结合。
J...[2019/10/28]
设计模式:规约模式(Specification-Pattern) - 拓荒者-OTW
“其实地上本没有路,走的人多了,也便成了路”——鲁迅《故乡》
这句话很好的描述了设计模式的由来。前辈们通过实践和总结,将优秀的编程思想沉淀成设计模式,为开发者提供了解决问题的思路。除此之外,设计模式还是开发者之间沟通的桥梁,是程序员的语言,比如我说这段代码用的是单例模式,你就知道它...[2019/10/28]
动态代理模式——JDK动态代理
今天,我就来讲一下动态代理的设计模式。
动态代理的意义在于生成一个代理对象,来代理真实对象,从而控制真实对象的访问。操作动态代理需要两个步骤:一、代理对象和真实对象建立代理关系。二、实现代理对象的代理逻辑方法。
在Java中,有很多的动态代理技术。如:JDK、CGLI...[2019/10/28]
面试连环炮系列(二十二):常用的设计模式有哪些
常用的设计模式有哪些,作用是什么
设计模式一共23种,常用的设计模式有:
工厂模式: 构建多个对象的工厂。
单例模式:单例类负责创建自己的对象,同时确保只有单个对象被创建
代理模式:代理其他类,增强原来类的功能。
外观模式:包装多个类的复杂性,对外提供统一的方法。
责任链模式:为了避免...[2019/10/25]
设计模式之?外观模式
简介
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。
模式分析
根据&...[2019/10/25]
《深入浅出设计模式》简记
1 工厂模式(Factory)
1.1 简单工厂模式
1.2 &n...[2019/10/25]
通俗易懂设计模式解析——备忘录模式
前言
今天我们来看看备忘录模式【MementoPattern】,我们平时写文档的时候一不小心写错了一些字或者删除了一些东西怎么办呢?不用怕、Windows里面提供了Ctrl+Z,后退一步,可以一直后退。这个东西怎么实现的呢?我们记得之前讲过一个命令模式。命令保存的是发起人的具体命令...[2019/10/24]
设计模式------中介者模式
中介者模式: 定义一个对象来封装一系列对象的交互.
中介者的四个角色: 1.Mediator(抽象中介者) 2.ConcreteMediator(具体中介者) 3.Colleague(抽象同事类) 4.ConcreteColleague(具体同事类)
...[2019/10/23]
Head First设计模式——策略模式
1、继承带来的扩展和复用问题
继承作为面向对象的三大要素(封装、继承、多态)之一为什么会带来问题,问题如何解决然后形成一种设计模式,head frist设计模式书中以鸭子作为例子讲解什么情况下继承的方式会带来问题。首先有各种各样的鸭子,那么自然想到各种鸭子继承自一个父类:父类为Duck...[2019/10/21]
Maven 项目在 Eclipse 的创建配置
第1步
New 菜单 Other.. -> Maven -> Maven Project ,然后单击 Next 。如下图所示
第2步
在New Maven Project向导中,选择Create a simple proj...[2019/10/21]
通俗易懂设计模式解析——访问者模式
前言
今天我们看的是访问者模式【Visitor Pattern 】,我们理解访问者模式这个名称可能会有利于我们理解其核心代码块。我们看这么个例子:我去朋友家做客,那么朋友属于主人,我则属于访问者。这时刚好朋友在炒菜,却没得酱油了。如果朋友下去买酱油将会很麻烦而且会影响炒菜...[2019/10/21]
状态模式
状态模式,顾名思义,重点关注对象的各种状态。状态模式将对象的每一种状态独立成类,同时将对象的行为委托给对应的状态类执行。它的优点在于,当需要增加或者减少对象的状态时,只需要增加减少状态类,并修改少量的代码就能实现。
...[2019/10/21]
设计模式-单例模式code
package singeton;import java.security.SecureRandom;/** * @author Zero * @since 2019-08-13. * Description: */public cla HungrySingleton { pri...[2019/10/21]
对JDK动态代理的模拟实现
对JDK动态代理的模拟
动态代理在JDK中的实现:
IProducer proxyProduec = (IProducer)Proxy.newProxyInstance(producer.getCla ().getCla Loader()
, produ...[2019/10/21]
设计模式之美—工厂方法模式
工厂方法模式
简单工厂模式有一个问题就是,类的创建依赖工厂类。
如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?
就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的...[2019/10/18]
通俗易懂设计模式解析——责任链模式通俗易懂设计模式解析——责任链模式
前言
今天我们介绍的是责任链模式【Chain of Responsibility Pattern】。对于责任链模式理解起来还是比较容易的。例如在公司请假、三天以内部门经理批准即可,但是三到七天可能就需要总监批准了、七天以上需要副总裁批准。对于这么一个需求最初的解决方案就是if-el...[2019/10/18]
长久养成的打卡习惯可千万不能丢呀
哎呀呀哎呀呀,没想到距离上一次打卡已经过去N天了,这N天有点难熬呀。一边赶着项目,一边又盯着留言,生怕有人催更,这不,昨天就有留言来催更了,哈哈哈哈。真的是想什么来什么。
简单说下这N天的状况哈,国庆去了趟西安,聆听了西安的历史,感觉棒棒哒。但是,西安和浙江国庆期间温度天壤之别,小编回...[2019/10/18]
剑指offer笔记面试题2----实现Singleton模式剑指offer笔记面试题2----实现Singleton模式
题目:设计一个类,我们只能生成该类的一个实例。
解法一:单线程解法
缺点:多线程情况下,每个线程可能创建出不同的的Singleton实例
#include <iostream>
using namespace std;
cla S...[2019/10/18]
设计模式之美—简单工厂模式
简单工厂模式
简单工厂模式分为三种:普通简单工厂、多方法简单工厂、静态方法简单工厂。
普通工厂模式
最近看了老酒馆电视剧,深深被陈怀海他们的情怀所感动,当然里面也有很多的酒,比如扳倒井,闷倒驴,跑舌头,吹破天,二闺女,枕头亲。我们以酒为例:
创建酒的接口:
...[2019/10/17]
设计模式之美—单例模式
单例模式
什么是单例?
该类只能有一个实例。
该类负责创建自己的对象。
在整个项目中都能访问到这个实例。
应用场景
读配置文件时,维护全局的Config类。
线程池、连接池,统一进行分配和管理。
网站的计数器,也可以采用单例模式实现,保持同步
代码实现
...[2019/10/16]
通俗易懂设计模式解析——策略模式
前言
今天我们来看策略模式【Stragety Pattern【行为型】】,这个模式还是比较好理解的。策略怎么理解呢?一般是指:1. 可以实现目标的方案集合;2. 根据形势发展而制定的行动方针和斗争方法;3. 有斗争艺术,能注意方式方法。总的来说呢就是针对一个目的的不同的方法集合。这...[2019/10/16]
设计模式 - 动态代理原理及模仿JDK Proxy 写一个属于自己的动态代理设计模式 - 动态代理原理及模仿JDK Proxy 写一个属于自己的动态代理
本篇文章代码内容较多,讲的可能会有些粗糙,大家可以选择性阅读。
本篇文章的目的是简单的分析动态代理的原理及模仿JDK Proxy手写一个动态代理以及对几种代理做一个总结。
对于代理模式的介绍和讲解,网上已经有很多优质的文章,我这里就不会再过多的介绍了,这里推荐几篇优质的文章作为参...[2019/10/15]
设计模式之?代理模式
一、代理模式的作用
将主要业务与次要业务进行松耦合的组装
二、代理模式本质
监控行为的特征
例子:
<input type="button" onclick="处理函数">
三、生活案例
案例:饭前便后要洗手
分析:
1.分析...[2019/10/15]
通俗易懂设计模式解析——状态模式
前言
今天我们讲的是状态模式【State Pattern】、这个名字咋一看不好理解,但是仔细一想还是比较容易的。状态模式重点关注的是状态。状态又牵扯着什么呢?房屋的状态暂且可以分为出租、签订合同、退房。那么出租对应的是什么呢?出租状态代表可以租房。可以租房是一个行为了。所以不难理解...[2019/10/14]
通俗易懂设计模式解析——中介者模式
前言
今天我们一起看看中介者模式,怎么去理解这个模式呢?说起来也简单、好理解。生活中我们租房经常都是通过中介来实现的。一般租房要么是房东直租要么是中介。那么今天要讲的中介者模式和租房的这个中介是否有关系呢?当然是有点关系的。中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式...[2019/10/14]
组合模式
组合模式允许用户将对象组合成树形结构来表现“整体/部分”的层次结构,从而能够以一致的方式处理单个对象以及对象组合。根据这个定义,首先能够想到的就是软件的菜单,一个菜单可以包含菜单项(菜单项是指不再包含其他内容的菜单条目),...[2019/10/14]
设计模式-行为型-解释器模式设计模式-行为型-解释器模式
解释器模式(Interpreter):
从名称上来看看这个模式,个人的最初理解“解释器”和Google的中英翻译功能类似。如果有一天你去国外旅游去了,比如去美国吧,美国人是讲英语的,我们是讲汉语的,如果英语听不懂,讲不好,估计沟通就完蛋了,不能沟通,估计玩...[2019/10/11]
通俗易懂设计模式解析——观察者模式
前言
今天我们一起看看这个观察者模式,这个模式简单来说就是一个发布订阅类似的模式。按照名字来理解也就是存在一个观察者和一个被观察者。说几个例子给大家听,大家应该就明白了。例如在我们现在通过银行卡支付之后,会收到银行发过来的提示信息。例如当我们话费余额或者流量不足之时也会收到提示信息...[2019/10/11]
单例模式之多线程调试与破坏单例
前言
在之前的 设计模式 - 单例模式(详解)看看和你理解的是否一样? 一文中,我们提到了通过Idea 开发工具进行多线程调试、单例模式的暴力破坏的问题;由于篇幅原因,现在单独开一篇文章进行演示:线程不安全的单例在多线程情况下为何被创建多个、如何破坏单例。
如果还不知道如何使...[2019/10/11]
通俗易懂设计模式解析——迭代器模式
前言
今天我们一起看看行为模式中的迭代器模式,迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。在系统开发中简单说可以理解成遍历。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层或者内部表示。
迭代器模式介绍
一、来由
在系统开发中,集合...[2019/10/11]
设计模式-行为型-备忘录模式设计模式-行为型-备忘录模式
备忘录模式(Memento):
后悔药来啦!!!备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在需要时能将该对象恢复到原先保存的状态。
备忘录模式的角色:
1)发起人(Originator):记录当前时刻的内部状态...[2019/10/11]
设计模式-行为型-访问者模式设计模式-行为型-访问者模式
访问者模式(Vistor):
访问者模式的官方定义是这样的:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。官方的东西总是晦涩难懂的,那么我们现在就来拆解一下:首先"一个作用于某对象结构中的各元素的操作",提到了三个东西:对...[2019/10/10]
部分设计模式对比分析
桥接模式与装饰者模式区别:
桥接模式类图
装饰者模式类图
1、定义:
(1)桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化
(2)装饰者模式:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现...[2019/10/10]
你不知道的 IDEA Debug调试小技巧你不知道的 IDEA Debug调试小技巧
一、多线程调试断点
Intellij IDEA 的debug断点调试是有一个模式的选择的,就像下面这张图,平时我们都使用的是默认的 ALL(在Eclipse中默认是线程模式) ,这种模式我们只能将一个线程断下来,但其他线程却已经执行过了;而将其改为 Thread 后,就可以多个线程都断下...[2019/10/9]
设计模式-行为型-中介者模式
中介者模式(Mediator):
在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群、短信平台和房产中介。不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话...[2019/10/9]
行为型设计模式(下)
策略模式:
1、定义:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
2、模型结构:
(1)抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,
&nbs...[2019/10/9]