设计模式
文章平均质量分 92
danfengw
这个作者很懒,什么都没留下…
展开
-
设计模式——解释器模式
解释器模式定义原创 2020-03-27 11:48:53 · 241 阅读 · 1 评论 -
Java 设计模式
点击文字可进行跳转创建型简单工厂模式(Simple Factory)工厂方法模式 (Factory Method)抽象工厂模式(Abstract Factory)建造者模式(Builder)原型模式(Prototype)单例模式(Singleton)结构型模式适配器模式(Adapter)桥接模式(Bridge)组合模式(Composite)装饰模式(Decorator)外...原创 2020-01-03 17:12:42 · 300 阅读 · 0 评论 -
设计模式——享元模式
享元模式定义原创 2019-10-29 20:52:59 · 340 阅读 · 1 评论 -
设计模式——中介者模式
中介者模式定义:原创 2019-10-28 07:54:17 · 399 阅读 · 0 评论 -
设计模式——迭代器
迭代器定义提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示(简单来说就是遍历)类型:行为型使用场景(1)访问一个集合对象中的各个元素又不暴露该对象的内部表示(2)为遍历不同的集合结构提供一个统一的接口优缺点优点:分离了集合对象的遍历行为缺点:类的个数成对增加其他相关设计模式迭代器模式和访问者模式:都是迭代的访问集合对象中的各个元素,区别:访问者模式扩...原创 2019-10-27 23:28:27 · 330 阅读 · 0 评论 -
设计模式——适配器模式
适配器模式定义:将一个类的接口转换成客户期望的另一个接口,使原本就扣不兼容的类可以一起工作类型:结构型适用场景:已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。优点:(1)能提高类的透明性和复用,现有的类复用但不需要改变(2)目标类和适配类解耦,提高程序扩展性(...原创 2019-10-27 22:57:47 · 247 阅读 · 0 评论 -
设计模式——外观模式
外观模式定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口外观模式定义了一个高层接口,让子系统更容易使用类型:结构性使用场景:(1)子系统越来越复杂,增加外观模式提供简单调用接口(2)构建多层系统结构,利用外观对象作为每层的入口,简化层间调用优点:简化了调用过程,无需了解深入子系统,防止带来风险减少系统依赖,松散耦合更好地划分访问层次符合迪米特法则,即最少直...原创 2019-10-27 22:56:39 · 204 阅读 · 0 评论 -
设计模式——状态模式
状态模式定义允许一个对象在其内部皇台改变时改变他的行为类型:行为型使用场景一个对象存在多个状态(不同状态下行为不同),且状态可相互转换状态转换的情况比较复杂优缺点优点:将不同的状态隔离把各种状态的转换逻辑,分布到state的子类中,减少相互间依赖增加新的状态非常简单缺点:状态多的业务场景导致类的数目增加,系统变复杂与其他模式的关联状态模式与享元模式有时候配合使用De...原创 2019-10-27 13:00:41 · 317 阅读 · 0 评论 -
设计模式——抽象工厂
抽象工厂定义抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类类型:创建型适用场景客户端不依赖于同一产品实例如何被创建、实现等细节强调一些列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复代码提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现优缺点优点:具体产品在应用蹭代码隔离,无须关心具体创建细节将一个系列的产品...原创 2019-10-25 19:10:23 · 269 阅读 · 0 评论 -
设计模式——工厂方法模式
定义定义一个创建对象的接口,但实现让这个接口的类来决定具体实例化哪个类,工厂方法让类的实例化推迟到子类中进行类型:创建型使用场景(1)创建对象需要大量重复的代码(2)客户端不依赖于产品类实例如何创建、实现等细节(3)一个类通过其子类来指定创建哪个对象优缺点优点:用户只需要关心所需产品对应的工厂,无需关心创建细节加入新产品符合开闭原则,提高可扩展性缺点:类的个数容易过多,增...原创 2019-10-21 07:56:23 · 229 阅读 · 0 评论 -
设计模式——访问者模式
访问者模式简介定义封装作用于某种数据结构(如List Set Map等)中各元素的操作可以在不改变各元素的类的前提下,定义作用于这些元素的操作类型:行为型适用场景访问者模式平时被使用到的比较少(1)一个数据结构包含很多类型的对象(2)数据结构与数据操作分离优缺点优点增加新的操作很容易,即增加一个新的访问者缺点增加新的数据结构比较困难具体元素的变更比较麻烦相关设计模式...原创 2019-10-20 23:32:28 · 161 阅读 · 0 评论 -
设计模式 ——命令模式
命令模式简介定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,对请求排队或记录请求日志,以及支持可撤销的操作优点(摘自大话设计模式)(1)比较容易地设计一个命令队列(2)在需要的情况下,可以比较容易地将命令记入日志(3)允许接受请求的以放决定是否要否决请求(4)可以容易地实现对请求的撤销和重做,新增加的具体命令类不影响其他类使用场景需要抽象出待执行的操作,然后...原创 2019-10-20 22:34:55 · 393 阅读 · 0 评论 -
设计模式——简单工厂模式
简单工厂模式介绍定义由工厂对象决定创建出哪一种产品类的实例类型:创建型优缺点优点简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖只需要传入一个正确的参数,就可以获取你需要的对象。缺点增加新产品的时候需要修改工厂类的逻辑,违背了开闭原则。与工厂模式工厂方法模式定义一个用于创建对象的接口,让子类...原创 2019-10-10 20:05:57 · 180 阅读 · 0 评论 -
设计模式——备忘录模式
备忘录模式介绍定义保存一个对象的某个状态,以便在适当的时候恢复对象类型行为型使用场景保存及回复数据相关业务场景优缺点优点为用户提供一种可恢复机制,存档相关信息缺点资源占用实例package com.df.designpatterns.mementopattern;public class Memento { private String title; pr...原创 2019-10-10 20:04:55 · 179 阅读 · 0 评论 -
设计模式——观察者模式
什么是观察者模式观察者模式有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。举个例子:传播点正能量,就拿里约奥运会来说吧。奥运会比赛就是被观察者,看奥运的人,我们大家就是观察者,在奥运会中国某个比赛赢了的时候,我们这些观察者就会做出一些反应,发微博啊,发朋友圈啊,这就是原创 2016-08-16 18:54:14 · 542 阅读 · 0 评论 -
设计模式——代理设计模式
学习了一下代理设计模式,顺便记录一下心德。 代理模式在变成中比较常见同时在生活中我们也是比较常见的,比如让同事给带饭,找婚介公司给筹划婚礼,找中介公司给你把房子租出去等。 代理模式使用场景: 对一个类我们不能获取到某个对象或者不想直接获取某个对象时可以通过一个代理对象间接访问该对象,委托对象与代理对象需要实现相同的接口。 代理模式分为两种:静态代理+动态代理。静态代理在代码运行原创 2017-02-08 10:26:41 · 578 阅读 · 1 评论 -
设计模式——装饰者模式
装饰者设计模式简介定义在不改变原有对象的基础之上将功能附加到对象身上,补充定义:提供了比继承更有弹性的替代方案(扩展原有对象功能) 类型 结构型适用场景扩展一个类的功能或给一个类添加附加职责动态的给一个对象添加功能,这些功能可以再动态的撤销 优点(1)继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。(2)通过适用不同装饰类以及这些装饰类的排列组合,可以实...原创 2019-09-18 00:17:45 · 243 阅读 · 0 评论 -
设计模式 桥接模式
定义:将抽象部分与它的具体 实现部分分离,使它们都可以独立地变化(解耦)通过组合的方式建立两个类之间关系,而不是继承类型:结构型使用场景:抽象和具体实现之间增加更多的灵活性一类存在两个或多个独立变化的唯独,且这两个(或多个)维度都需要独立进行扩展不希望使用继承,或因为多层继承导致系统类的个数剧增优点:分离抽象部分及具体实现部分提高系统可扩展性符合开闭原则符合合成复用原则缺点...原创 2019-09-23 09:28:00 · 370 阅读 · 0 评论 -
设计模式——责任链模式
责任链模式定义:为请求创建一个接受此次请求对象的链类型:行为型适用场景:一个请求的处理需要多个对象当中的一个或几个协作处理优点:(1)请求的发送者和接收者(请求的处理)解耦(2)责任链可以动态组合缺点:(1)责任链太长或者处理时间过长影响性能(2)责任链有可能过多...原创 2019-09-23 09:30:13 · 297 阅读 · 0 评论 -
设计模式——策略模式
定义:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法变化,不会影响到使用算法的客户。if……else……类型:行为型适用场景:系统有很多类,而他们的区别仅仅在于他们的行为不同一个系统需要动态地在集中算法中选择一种。优点:开闭原则避免使用多重条件转移语句提高算法的保密性和安全性缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类产生很多策略类相关...原创 2019-09-23 11:09:02 · 157 阅读 · 0 评论 -
设计模式——原型设计模式
定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。特点:不需要知道任何创建的细节,不调用构造函数创建型使用场景类初始化消耗较多资源new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)构造函数比较复杂循环体中生产大量对象时优点:原型模式性能比直接new一个对象性能高简化创建过程缺点:必须配备克隆方法对克隆复杂对象或对克隆出的对象进行复杂改造时...原创 2019-09-23 13:25:00 · 360 阅读 · 0 评论 -
设计模式——建造者模式
建造者模式介绍定义将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示用户只需要指定需要建造的类型就可以得到他们,建造的过程及细节不需要知道类型:创建型适用场景对象有非常复杂的内部结构(很多属性)想把复杂对象的创建与适用分离优缺点优点:封装性好,创建于与使用分离,一定程度上进行解耦缺点:产生多余的Builder对象,同时产品内部如果发生变化,建造者也需要进行...原创 2019-09-23 15:49:47 · 384 阅读 · 0 评论 -
设计模式——组合模式
组合模式简介定义将对象组合成树形结构,以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性类型:结构型适用场景(1)希望客户端可以忽略组合对象与单个对象的差异的时候(2)还有就是处理树形结构的时候,比如菜单,菜单下面有子菜单,子菜单下面还有菜单,以及目录,目录下有子目录优缺点优点:可以清除地定义分层次的复杂对象,表示对象的全部或部分层次让客户端忽...原创 2019-09-24 00:09:50 · 169 阅读 · 0 评论 -
设计模式——模板方法模式
模板方法模式简介定义定义了一个算法的骨架,并允许子类为一个或者多个步骤提供实现模板方法使子类在不改变算法结构的情况下,重新定义算法的某些步骤类型:行为型使用场景(1)一次性实现一个算法的不变部分,将可变的行为留给子类(2)各个子类中的公共行为被提取出来,并集中到一个公共父类中,从而避免代码重复优点提高复用与扩展 符合开闭原则相关设计模式模板方法与工厂方法模式工厂方法是模板方...原创 2019-10-09 08:34:00 · 199 阅读 · 1 评论 -
设计模式——单例模式之“饿汉模式”与“懒汉模式”
设计模式一共分为23种其中我们最常用的也是最简单的就是单例设计模式,什么是设计模式?为什么使用要使用模式?什么是单例模式?感觉所有的事情都是在我们有了疑问之后才会更加有求知欲! 首先来说说设计模式,只是说下我个人看法,就好像我们的日常生活中的好多事物,比如建筑的风格与样式,时间的长久人们对建房子形成了一定的认识或者是探索出了规律、模式,哥特式建筑就是要包括尖形拱门、肋状拱顶与飞拱才能算是哥特式原创 2015-11-09 15:32:54 · 1785 阅读 · 6 评论