设计模式
文章平均质量分 68
FelixClinton
这个作者很懒,什么都没留下…
展开
-
每日设计模式——工厂模式之一(简单工厂模式)
工厂模式以下内容来自百度百科,个人认为其可以作为一个很好的引子来讲述工厂模式,故将其贴在这。工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,...原创 2018-09-16 22:11:44 · 186 阅读 · 0 评论 -
每日设计模式——建造者模式
建造者模式建造者模式主要功能构建复杂的产品,而且是细化的,分步骤的构建产品,也就是建造者模式重在解决一步一步构造复杂对象的问题。更重要的是,这个构建过程是统一的,固定不变的,变化的部分放到生成器部分了,只要配置不同的生成器,那么同样的过程,就能构建出不同的产品来。建造者模式的通用类图如下:在建造者模式中,有四个角色:Product产品类,Builder抽象建造者,ConcreateBu...原创 2018-10-15 21:07:32 · 158 阅读 · 0 评论 -
每日设计模式——责任链模式
示例说责任链模式场景:大学生请假。大学,是一个相对宽松而自由的环境,请假出游都非常的容易,但是为了同学们的安全,学校对学生请假做出了如下规定:1. 请假时间在3天以内,找班导师签字即可;2.请假时间超过3天但小于7天,找系主任签字即可;3.请假时间超过一周,找院长签字即可......那么,这样一个场景,假如让你用代码来实现,你应该怎么做呢??很多人说简单,看我的:...原创 2018-09-29 20:41:43 · 184 阅读 · 0 评论 -
每日设计模式之—代理模式(静态代理)
代理模式之静态代理模式 代理模式在生活中十分常见,比如代购,其本质是本该自己完成的事情找别人帮忙完成了,这就是代理。比如说喜欢玩游戏的朋友,每天都是开黑升级打怪,升级打怪,(日积月累,累啊),但是还想升级咋办呢???方案一:各种砸钱(高昂的费用,但是省了时间)方案二:找代练(费用稍低,本质还是时间堆积,不过是把打怪的时间转嫁给另外一个哥们而已)。 找代练也有两种方式:...原创 2018-09-09 19:12:20 · 265 阅读 · 0 评论 -
每日设计模式——原型模式
示例说原型模式又到了一年一度最火热最繁忙的秋招,每天都会收到各个公司各种各样的短信或邮件,你是否层认真的思考过,公司是如何给你发送这条短信或者这封邮件的呢???有的人可能会说,hr小姐姐们一条一条编辑的啊。但是真的是这样吗???那有人又说了,我直接将短信的大致内容编辑成一个模板交给代理商,代理商会给我解决的,但是你有想过代理商又是怎么给你发送短信或邮件的呢??假如这个任务交给你,你...原创 2018-09-29 10:41:05 · 254 阅读 · 0 评论 -
每日设计模式——适配器模式
适配器模式适配器模式将一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能在一起工作。适配器在生活中还是很常见的,比如说咱们的手机充电器一般是两个脚的,但是咱们只有三个插孔的插线板,如果想要通过这个插线板给手机充电的话就需要一个转换器能够连接插线板和手机充电器,而这个转换器就是一个适配器。从上面的例子中,我们可以抽象出适配器模式涉及到的角色主要有以下...原创 2018-10-12 19:25:41 · 187 阅读 · 0 评论 -
每日设计模式——代理模式和装饰器模式的区别
代理模式和装饰器模式的区别首先我们对比一下代理模式和装饰器模式的类图结构:代理模式:这两个设计模式看起来很像。对装饰器模式来说,装饰者(Decorator)和被装饰者(ConcreateComponnet)都实现同一个 接口。对代理模式来说,代理类(ProxySubject)和真实处理的类(RealSubject)都实现同一个接口。此外,不论我们使用哪一个模式,都可以很容易地在真实...原创 2018-10-12 10:46:41 · 224 阅读 · 0 评论 -
每日设计模式——装饰器模式
装饰器模式装饰器模式是一个比较常见的模式,其主要是动态的给一个对象添加一些额外的职责。但从给对象增加职责来说,使用继承也能够实现,但是正如《head first大话设计模式》中那样,单纯的继承会造成“类爆炸”的问题,同时继承也不够灵活,很难做到对扩展开放,对修改关闭。所以,从这个角度来说,装饰模式相比生成子类来说更为灵活。装饰模式的类图结构如下:在类图中,包含四个部分的角色,Com...原创 2018-10-11 21:32:27 · 166 阅读 · 0 评论 -
每日设计模式——模板方法模式
模板方法模式模板方法模式就是定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。例如:某个特定的应用中具有很多的子任务,每个任务的数据计算步骤几乎都是一致的,只是具体的实现可能存在一些差别,则可以定义一个超类,在超类中定义所有任务的计算流程,然后子类去实现特殊的步骤。代码如下所示:package com.factor...原创 2018-09-24 18:08:09 · 202 阅读 · 0 评论 -
每日设计模式——工厂模式之三(抽象工厂模式)
抽象工厂模式抽象工厂又叫做工厂的工厂。从某个角度来说抽象工厂是工厂方法模式的升级版。工厂方法模式相对简单,只负责某一类产品的创建工作,而工厂方法模式很强大,能创建很多的产品,从这个角度来说抽象工厂模式确实是工厂方法模式的升级。但是,从职能和应用场景上来看,不应该将抽象工厂看成是工厂方法模式的升级版。工厂方法模式通常运用在具有相同功能但是实现不同的产品类的创建,而抽象工厂模式则是运用于具备不同功...原创 2018-09-24 14:34:50 · 183 阅读 · 0 评论 -
每日设计模式之—单例模式
单例模式单例模式:一个系统只能存在一个对象的实例,如一个国家只能有一个皇帝,一个系统只能有一个资源管理器。单例通常分为饿汉式单例和懒汉式单例。饿汉式单例是不管需不需要,一旦加载类就进行创建,懒汉式单例是按需创建。一般来说,懒汉式单例要优于饿汉式单例。在面试过程中,面试官常常会要求我们实现一个单例模式。单例模式的实现通常需要考虑性能和线程安全两个方面,性能高又线程安全的单例模式才是面...原创 2018-09-10 20:23:20 · 156 阅读 · 0 评论 -
每日设计模式——代理模式(动态代理)
代理模式之动态代理上一篇文章https://blog.csdn.net/qq_28044241/article/details/82534196已经介绍了静态代理的基本原理和实现:所谓代理,其实就是找一个对象(如上一篇文章中的游戏代练)代替自己去干一些事(如上篇文章中的登陆、打怪、升级等),其反应到代码中就是去实现一个代理类,并调用自己(被代理对象)的方法。在代理类执行被代理对象的方法之前或之...原创 2018-09-10 12:34:32 · 224 阅读 · 0 评论 -
每日设计模式——工厂模式之二(工厂方法模式)
简单工厂模式负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护 。虽然最后我们改进了简单工厂模式,即使增加产品类也不需要再去修改工厂类,但是这也增加了客户端代码的复杂度(客户端需要知道创建哪个类的实例)。工厂方法模式工厂方法模式定义一个用于创建对象的接口,让子类去决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。下面...原创 2018-09-18 21:43:03 · 164 阅读 · 0 评论 -
每日设计模式——策略模式
策略模式策略模式是一种非常简单的设计模式,其主要思想是设计一系列或一组算法并将每一个算法都封装起来,使他们之间可以互换,在需要执行的时候根据不同的需求执行不同的算法,java集合框架中的Collections.sort()方法就是一个典型的策略模式。如下图所示,其类结构图也比较简单:策略模式涉及到三个角色:Context封装角色:该角色起到承上启下封装作用 ,屏蔽高层模块对策略、算...原创 2018-10-16 10:17:45 · 144 阅读 · 0 评论