从头开始学设计模式
小大宇
能与优秀的人为伍自然就会变优秀
展开
-
单例设计模式1
一、饿汉式 单例设计模式,简单说:一个类只有一个实例对象。 单例设计模式核心:因为内存、所以性能。 饿汉式是指,这个类一旦加载,这个类的实例就被创建。而加载某个类到内存中由调用这个类的静态成员触发。单例模式里面的getInstance()就是静态方法。 饿汉式代码步骤:1.构造函数私有化,2.内部创建本类静态实例,3.对外提供...原创 2018-04-01 23:23:21 · 550 阅读 · 0 评论 -
策略设计模式2
一、基本定义策略设计模式:“针对”一组算法,“将”每一个算法封装到具有相同接口的独立的类中,“从而”使它们可以相互替换。 核心:策略实现相同接口,可以相互替换。二、目的 策略设计模式的重点不是如何实现算法,而是如何组织、调用这些算法。策略设计模式让程序的结构更加灵活,让系统具有更好的灵活性和扩展性,降低需求变动的维护成本。...原创 2018-04-03 09:34:21 · 449 阅读 · 0 评论 -
工厂设计模式3
一、简单工厂模式 工厂模式核心:(抽象)工厂生产抽象产品。实际产品向上转型为接口。 简单工厂模式从名字就知道非常简单,它的代码体现就是一个工厂对象,根据不同的情况或者说是参数,使用条件语句判断,返回特定接口的实现类。 简单工厂模式代码三个主体:1.工厂类 2.抽象产品 3.具体产品 //用来生产手机的工厂...原创 2018-04-04 10:13:42 · 389 阅读 · 0 评论 -
适配器设计模式4
一、定义 将一个实现类的接口转换成客户希望的另外一个接口。适配器模式(Adapter)使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 我的理解:让一个实现了A接口的类,可以用到接收B接口的方法上。二、完全解耦如果某个方法的参数是一个"类"的引用,而不是一个"接口"的引用的话,那么显而易见,我们传递的参数必须是这个类的对象或者...原创 2018-04-08 10:05:57 · 350 阅读 · 0 评论 -
装饰设计模式5
一、定义装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。装饰模式允许系统动态决定“贴上”一个需要的“装饰”,或者除掉一个不需要的“装饰”。继承关系则不同,继承关系是静态的,它在系统运行前就...原创 2018-04-08 17:45:23 · 280 阅读 · 0 评论 -
建造者设计模式6
一、定义 官方定义:将一个复杂对象的构建和表示分离,使同样的构建过程可以创建不同的表示。 官方定义真的是....,好吧,让我来指点迷津。二、建造者需要的几个角色 1.Product产品类。这个产品类比较复杂,内部有许多其它类的对象的引用,可以视为此产品类的逻辑上必不可少的“组成部分”。当我们要构造出此产品的时候,产品持有的其它引用也必须...原创 2018-04-09 17:00:17 · 358 阅读 · 0 评论 -
原型模式7
一、定义 官方定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 说的简单一点,就是对象的复制。二、实现过程 1.实现Cloneable接口。 2.重写clone()方法,将clone()方法的修饰符修改为public,为了让别人包的环境中也能调用此clone()方法。//细胞public c...原创 2018-04-10 17:20:16 · 250 阅读 · 0 评论 -
代理设计模式8--代理模式探索
写在最前面:关于代理模式,我准备写两篇博客。第一篇写基本的代理模式,并提供常用的代理工具类,第二篇在实战中如何使用代理模式----使用注解式AOP操作常用的Controller层代码。 另外推荐关于代理模式的深度好文:谈谈JAVA的代理模式认识 一——为什么使用代理模式java的动态代理机制详解代理模式(...原创 2018-04-19 16:33:51 · 421 阅读 · 0 评论 -
代理设计模式9--使用AOP风格的代理模式
代理模式归根结底,就是在操作真实对象的前后加入新的操作。通常的,在项目中,把业务逻辑代码与公共的事务进行分离。Spring中采用AOP来操作。下面开始介绍如何代理一个Controller类,为Controller加入额外的操作。 第一步:首先是加入依赖包,cglib动态代理的包,Controller类不能为final类哦,因为这个报过一次错。 ...原创 2018-04-19 18:31:20 · 330 阅读 · 0 评论 -
代理设计模式10知识扩展----注解与AOP
一、 为什么写这篇文章学习代理模式,横向学习了JDK动态代理,Cglib动态代理。然后学习代理模式在实际工作中的使用。现在工作中用来保存日志,使用cglib动态代理一个Controller类中的每一个方法。关于注解,我之前没有深入研究过,之前只是模仿着写过一些代码:使用自定义注解实现SpringMVC。现在已经工作了,应该增加更多的知识储备。废话不多说,开始记录。...原创 2018-04-20 17:57:28 · 470 阅读 · 0 评论 -
门面设计模式12
一、定义门面模式又称为外观模式,它是一种结构型模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。简单说,该模式把一个模块中的多个类的公共接口封装到一个“统一接口”中,而门面类拥有一个或多个这样的“统一接口”。再简单一点理解就是封装“流程”,简化调用。 最简单的例子就是一个电脑,封装了CPU、内存、...原创 2018-04-26 16:59:27 · 304 阅读 · 0 评论 -
桥接设计模式13
一、定义 官方定义:桥接模式属于结构型设计模式,将抽象部分与实现部分分离,使它们都可以独立的变化。 将两种可以独立变化的抽象分离开来,让它们独立的变化。再通过组合者两个抽象,形成功能强大的组合类。 上述定义太专业了,我的理解是:一个抽象类中持有多个接口或抽象类的引用,抽象类可以有不同的子类,接口也可以有不同的实现类,将这些不同的子类与不同的...原创 2018-04-28 11:03:00 · 313 阅读 · 0 评论 -
模版方法模式15
一、定义定义一个流程,将一些步骤的实现推迟到子类中。 模版方法中的两个角色:抽象父类:定义模版方法,在模版方法的流程中调用了抽象方法。具体子类:继承抽象父类,实现抽象方法。 推荐关于模版方法模式的好文,那里有最经典的例子:Java设计模式之模板方法模式(Templa...原创 2018-05-07 22:33:23 · 267 阅读 · 0 评论 -
观察者模式16
一、定义 观察者模式又称订阅发布模式。它定义了一种一对多的依赖关系,即一个类向多个类发送消息。多个观察者对象同时观察一个主题对象。当主题对象状态发生变化的时候,主题对象会向所有观察者对象发送消息,使他们更新自己。 此模式应用极其广泛,在Java语言中的典型应用就是监听器。在JS语言中的典型应用是“事件”,比如onclick事件,立即调用相关的function。此...原创 2018-05-10 07:55:55 · 327 阅读 · 0 评论 -
责任链模式17
一、定义 责任链是每一个对象持有其下家的引用而形成的一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 角色: 抽象处理者角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以返回对下家的引用。...原创 2018-05-14 08:20:26 · 345 阅读 · 0 评论 -
命令模式18
一、定义 将一个请求(命令)封装为一个对象。这个请求(命令)定义了“谁去做”与“做什么”。 命令模式的例子牢牢记住“电视机遥控器”就可以了。Invoker通过Command,最终让Receiver接受者执行。Invoker.action(); ==> command.execute(); ==> receiver.action();...原创 2018-05-18 09:17:44 · 289 阅读 · 0 评论 -
备忘录模式19
一、定义 定义:记录一个关键对象的关键属性,当关键属性发生变化的时或者出错时,有办法将对象恢复到以前的状态。 角色: 发起人Originator:这个角色是需要被记录的关键对象。一般来说,它有几个比较关键的属性需要被记录。 备忘录Memento:发起人将自己的关键属性保存到备忘录对象中。当发起人需要恢复的关...原创 2018-05-30 12:46:05 · 231 阅读 · 0 评论 -
状态设计模式20
一、定义 官方定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类,(State Pattern)是设计模式的一种,属于行为模式。 我的理解:当一个对象具有多种状态的时候,将这些状态抽取出来。每一种状态对应的是一种行为,执行相关的行为会导致状态的改变。比如订单的“未支付状态”,它执行“支付动作”后,订单的状态转变为了“已支付状态”。将这些...原创 2018-06-18 16:35:54 · 315 阅读 · 0 评论 -
中介者设计模式21
一、定义 用一个中介者对象封装一系列的对象交互,中介者使各对象之间不需要显示地相互作用,各对象之间只要跟中介者对象关联,从而使各对象之间的耦合降低,并且能独立地改变它们之间的交互。中介者设计模式属于行为设计模式。为了防止一个类会涉及修改其他类的行为,可以使用中介者模式,将系统从网状结构变为以中介者为中心的星型结构。 角色: 抽象中介者Media...原创 2018-06-19 11:07:09 · 268 阅读 · 0 评论