★★设计模式算法★
文章平均质量分 95
土豆是我的最爱
这个作者很懒,什么都没留下…
展开
-
【设计模式】——代理、策略、委派模式还在傻傻分不清?
前言前面的博文我们已经分别讲述了代理模式,策略模式和委派模式各自的使用及案例实现。但是三者都写完了,我发现其实我自己都有些混淆了,所以今天特意把他们放在一起看看究竟有什么区别和联系策略模式:策略模式是对算法的封装。定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点: 1、策略类...原创 2019-09-06 13:44:31 · 5246 阅读 · 3 评论 -
【设计模式】——委派模式
前言委派模式不属于GOF23种设计模式, 主要角色有三种: 抽象任务角色, 委派者角色, 具体任务角色.实现层面上, 定义一个抽象接口, 它有若干实现类, 他们真正执行业务方法, 这些子类是具体任务角色; 定义委派者角色也实现该接口, 但它负责在各个具体角色实例之间做出决策, 由它判断并调用具体实现的方法.委派模式对外隐藏了具体实现, 仅将委派者角色暴露给外部应用场景我们在这...原创 2019-09-04 21:08:06 · 3644 阅读 · 0 评论 -
小白都能看懂的七大排序算法详解
一、排序算法总览二、算法详解1、冒泡排序(Bubble Sort)原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。......原创 2018-09-04 23:49:57 · 10059 阅读 · 6 评论 -
【设计模式】——纯手写实现JDK动态代理
前言在【设计模式】——代理模式(静态)以及【设计模式】——代理模式(动态)中,我们已经基本了解了什么是代理模式,以及什么是静态代理,什么是动态代理。JDK动态代理以及Cglib动态代理其实底层实现原理都是字节码的重组,不过各自对应的代理场景不同,本文我们重点研究jdk动态代理。通过前文的了解,我们已经知道在JDK动态代理中是JDK动态的帮我们生成一个名为$Proxy0的代理类,那么,我.........原创 2019-08-22 16:15:45 · 6183 阅读 · 3 评论 -
【设计模式】——代理模式(动态)
前言动态代理是Java语言中非常经典的一种设计模式,也是所有设计模式中最难理解的一种,本文将通过一个简单的例子模拟JDK动态代理实现,让你明白动态代理设计模式的本质。从字面意思来看,代理比较好理解,无非就是代为处理的意思。举个例子,大家到一定年龄还没结婚的话,肯定会被父母催婚,不得已就要去相亲,那么就要去中介所或者找媒婆,那么此处的媒婆就是一个代理。是的,你没有看错,代理就是这么简单!...原创 2019-08-22 12:01:05 · 5448 阅读 · 0 评论 -
【设计模式】——单例模式(七种)
一、单例模式1.饿汉式public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return insta...转载 2018-12-24 13:50:26 · 6984 阅读 · 0 评论 -
【设计模式】——模板方法模式
一、模板方法模式在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。这时我们就需要定义一个模板结构,将具体内容延迟到子类去实现。在不改变模板结构的前提下在子类中重新定义模板中的内容。抽象类(AbstractClass):定义抽象的原语操...原创 2018-12-17 10:27:49 · 7116 阅读 · 0 评论 -
【设计模式】——原型模式
一、原型模式原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。客户(Client)角色:客户类提出创建对象的请求。 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个Java接口或Java抽象类实现。此角色给出所有的具体原型类所需的接口。 具体原型(Concre...原创 2018-12-10 09:16:16 · 6745 阅读 · 0 评论 -
【设计模式】——代理模式(静态)
一、代理模式代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。代理对象:起到中介作用,连接客户端和目标对象 例子:电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式...原创 2018-11-30 11:12:39 · 8160 阅读 · 2 评论 -
【设计模式】——装饰器模式
一、装饰器模式装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下:Component为统一接口,也是装饰类和被装饰类的基本类型。 ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。 Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,...转载 2018-11-23 17:33:07 · 8082 阅读 · 0 评论 -
【设计模式】——策略模式
一、策略模式写代码时总会出很多的if…else,或者case。如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿,维护的成本也会加大,而策略模式就能较好的解决这个问题,本篇博客就带你详细了解策略模式。定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。分析下定义,策略模式定义和封装了一系列的算法,它们是可以相...转载 2018-11-23 10:49:18 · 8077 阅读 · 0 评论 -
【设计模式】——工厂模式
一、简单工厂简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想有必要把它作为第一个讲一下。简单工厂模式又 叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通...转载 2018-11-22 17:07:26 · 8137 阅读 · 1 评论