设计模式
文章平均质量分 59
Boo_Wang
量变引起质变!
展开
-
设计模式之Kotlin
Kotlin之设计模式文章目录创建型工厂方法模式抽象工厂模式建造者模式原型模式单例模式结构型模式适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式行为型模式职责链模式命令模式解释器模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式模版方法模式访问者模式创建型工厂方法模式interface Product { val name: String}class ProductA(override val name: String = "ProductA") : Product转载 2021-10-05 03:57:29 · 283 阅读 · 0 评论 -
Java设计模式之模板方法模式
概述模板方法设计模式是一种行为模式. 当我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤会随着 环境的变化而改变的,那么,我们就可以使用模板方法模式,定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.使用场景多个子类有公有的方法,并且逻辑基本相同时重要,复杂的算原创 2016-08-27 00:08:44 · 621 阅读 · 0 评论 -
Java设计模式之访问者模式
概述访问者模式是一种将数据操作与数据结构分离的模式 是23中设计模式中最复杂的一个,使用频率也不是很高,但一旦需要它的时候将变得非常有用.软件系统中拥有一个由许多对象构成的,比较稳定的对象结构.这些对象的类都拥有一个accept方法用来接收访问者对象的访问. 访问者是一个接口,拥有visit方法,这个方法对访问到的对象结构中不同类型的元素做出不同的处理.在对象结构的一次访问过程中,我们遍历整个对原创 2016-08-27 13:58:36 · 693 阅读 · 0 评论 -
Java设计模式之中介者模式
概述中介者模式(Mediator)又称为调解者模式或调停者模式,中介者是一中行为型模式,听名字大家应该都知道了起到了中间桥梁的作用, 在软件开发过程中,势必会碰到这样一种情况,多个类或多个子系统相互交互,而且交互很繁琐,导致每个类都必须知道他需要交互的类,这样它们的耦合会显得异常厉害。 如果有这么一个中间者能够和所有的子系统交互,就会变得清晰的多.中介者模式就起到了这个作用.定义中介者包装了一系原创 2016-08-27 18:42:31 · 666 阅读 · 0 评论 -
Java设计模式之组合模式
概述组合模式也称为部分整体模式,是结构型设计模式,组合模式将一组相似的对象看作一个对象处理. 并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别.当组合体一个对象的一个方法被调用执行时, Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行定义将对象组合成树形结构以表示”部分-整体”的层次结构,使原创 2016-08-28 12:02:03 · 623 阅读 · 0 评论 -
Java设计模式之装饰模式
概述装饰模式(Decorator)也称为包装模式(Wrapper Pattern),是结构型设计模式之一. 其使用一种对客户端透明的方式来动态地扩展对象的功能,同时他也是继承关系的一种替代方案.客户端并不需要知道对象在装饰前和装饰后有什么不同.装饰模式可以在不创建更多子类的情况下将对象的功能加以扩展.定义动态的给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活.使用场景需要原创 2016-08-28 18:36:48 · 631 阅读 · 0 评论 -
Java设计模式之享元模式
概述享元模式是对象池的一种实现,英文名称 Flyweight 代表着轻量级的意思. 享元模式使用共享物件来尽可能的减少内存使用量,适用于可能存在大量重复对象的时候,缓存可共享的对象,达到对象共享,避免创建过多对象的效果.享元模式中可共享的状态称为内部状态,不可共享的状态称为外部状态,内部状态不会跟随环境而变化,外部状态会随着环境而变化.在经典的享元模式中会存在一个map容器,键是享元对象的内部状态原创 2016-09-01 00:03:46 · 1164 阅读 · 0 评论 -
Java设计模式之外观模式
概述外观模式通过一个外观类使得整个系统的接口只有一个统一的高层接口,对用户屏蔽诸多实现细节,降低用户使用成本.外观模式是我们封装api的常用手段.外观类中提供了客户端请求的简化方法和对现有系统类方法的委托调用,外观模式是一个结构型设计模式.概述要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,外观模式也叫门面模式,其提供了一个高层次的接口,使得子系统更易于使用使用场景为一个复杂子系统提原创 2016-09-04 21:27:45 · 732 阅读 · 0 评论 -
Java设计模式之桥接模式
概述桥接模式也称为桥梁模式,是结构型设计模式之一.桥接,见其名知其义,主要起到一个桥梁的作用,连接着桥梁两边.这个两边具体指的是什么呢?我们来看一下桥接模式的定义定义将抽象部分与实现部分分离,使他们都可以独立的进行变化. 从模式的定义上来看,我们可以知道,这里的桥梁指的就是连接 抽象类与实现类之间的桥梁,这样他们就可以独立的变化使用场景多维度变化类或者说多个树状类之间的耦合都可以使用桥接模式原创 2016-09-04 22:56:25 · 474 阅读 · 0 评论 -
Java设计模式之抽象工厂模式
概述抽象工厂模式是一种创建型设计模式,抽象工厂模式与工厂方法模式的主要区别是工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。 抽象工厂模式是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象.工厂方法模式产生的产品都衍生自同一个接口或抽象类 ,而抽象工厂模式则是衍生自不同的接口或抽象类.定义为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的原创 2016-09-06 22:21:27 · 493 阅读 · 0 评论 -
Java设计模式之解释器模式
概述解释器模式是一种用得比较少的行为型模式.提供了一种解释语言的语法或表达式的方式. 通过定义一个表达式接口,解释一个特定的上下文.定义给定一个语言,解释器模式可以定义出其文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 解释器中涉及到的文法,就是符合一定规则的语句结构. 如 abcd…….cdef(ab开头,ef结尾,中间N个cd)中,根据N值的不同,可以得到不原创 2016-09-07 07:05:03 · 5711 阅读 · 0 评论 -
Java设计模式之代理模式
概述代理模式(Proxy)也称为委托模式,是结构型设计模式 代理在我们日常生活中也并不少见,比如代理上网,代驾等等,所谓代理就是一个人或者机构代表另一个人或者机构采取行动,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。定义为其他对象提供一种代理以控制对这个对象的访问.使用场景无法或者不想直接访问某个对象,或者访问某个对象存在困难时需要注意的是为了保原创 2016-08-27 23:02:54 · 618 阅读 · 0 评论 -
Java设计模式之迭代器模式
概述迭代器模式又称为游标(CUrsor)模式,是行为型设计模式之一. 迭代器模式在容器类的设计中用到十分的广泛,主要为了解决 容器类中,提供遍历接口 和 对外隐藏细节的平衡,遍历方法会导致容器类承担过多的功能,而不提供遍历方法则无疑需要对外暴露诸多内部实现细节.定义提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示使用场景遍历一个容器对象时.UML类图类图中涉及到的角原创 2016-08-26 22:14:56 · 674 阅读 · 0 评论 -
Java设计模式之备忘录模式
概述备忘录模式是一种行为型模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态. 备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露. 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式.定义在不破坏封闭的前提下,捕获一个兑现的内部状态,并在该对象之外保存这个状态,这样,以后就原创 2016-08-25 23:27:53 · 864 阅读 · 0 评论 -
面向对象的六大原则及设计模式概览
单一指责原则(SRP)定义:一个类,应该仅有一个引起它变化的原因。一个类应该是一组相关性很高的函数,数据的封装。 单一指责的划分界限并不总是那么清晰,很多时候都是要考个人经验来界定实例:ImageLoader负责图片加载,ImageCache负责图片缓存的逻辑开闭原则(OCP)定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,对于修改是封闭的。实现开闭原则等重要手段是抽象和接口在软件的生原创 2016-04-11 23:20:18 · 745 阅读 · 0 评论 -
设计模式之单例模式
单例模式保证了在应用中只有一个实例的存在,比如在一个应用中,只需要一个ImageLoader实例。定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。场景确保某个类又切只有一个对象的场景,避免产生多个对象耗费过多的资源。当创建一个对象需要消耗的资源过多时,就要考虑用单例设计模式。 如一个公司只有一个ceo,一个应用中只有一个Application关键点构造函数不对外开放,pri原创 2016-04-12 23:31:29 · 627 阅读 · 0 评论 -
设计模式之Builder模式
简介建造者模式时一个创建型模式,常见的 是android中AlertDialog的设计。允许用户在不知道内部构建细节的情况下,更精细的控制对象的构建流程,使得构建过程和部件可以自由扩展。相关模式:模板方法设计模式,模板方法设计模式允许子类实现部分细节,而Builder模式是将所有细节都交由子类来实现。定义将一个复杂对象的构建与它的表示分离。使得同样的构建过程可以创建不同的表示。场景相同的方法,不同原创 2016-04-13 23:41:17 · 684 阅读 · 0 评论 -
Java设计模式之工厂方法模式
概述工厂方法模式是创建型设计模式的一种, 工厂方法模式也叫工厂模式或虚拟构造器模式,在工厂方法模式中,一个工厂父类包含多个工厂子类,父类定义接口,子类负责创建具体的产品对象.定义定义一个用于创建对象的接口,让子类决定实例化那个类,工厂方法使一个类的实例化延迟到其子类。使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式,复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式原创 2016-04-15 07:23:55 · 568 阅读 · 0 评论 -
Java设计模式之适配器模式
概述适配器模式是结构型设计模式之一,在不修改原来两个模块代码的情况下,将两个不兼容的类融合在一起,符合开闭原则.扩展阅读适配器模式原理及实例介绍定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配无法在一起工作的两个类可以在一起工作.结构Adapter模式的UML结构图如下.Target:期待得到的接口.Adaptee:被适配的接口.Adapter:适配器,将源接原创 2016-08-06 18:54:52 · 10496 阅读 · 0 评论 -
Java设计模式之原型模式与深浅拷贝
概述原型模式是一种创建型模式,允许用户从一个样板实例中复制出一个内部属性一致的对象,俗称为克隆.被复制出来的实例就是我们所称的原型. 多用在创建实例比较复杂或者耗时的情况下,因为复制一个已经存在的实例可以使程序运行更高效.定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。使用场景类初始化需要消化非常多的资源,通过原型拷贝避免这些消耗通过 new 产生一个对象需要非常繁琐的数据准原创 2016-08-08 14:29:55 · 2933 阅读 · 0 评论 -
Java设计模式之策略模式
概述策略模式(Strategy)是一种行为型模式, 好处是我们可以动态的改变对象的行为.针对一组算法或者策略,我们可以将其抽象出来,提供一个统一的接口,不同的算法或者策略有不同的实现类, 通过注入不同的对象实现策略的动态替换,提高扩展性和维护性.定义策略模式定义了一系列算法,并将每一个算法封装起来,使得他们可以相互替换,策略模式让算法独立于使用它的客户端,在不影响到客户端的情况下发生变化.使用场原创 2016-08-17 00:02:39 · 648 阅读 · 0 评论 -
Java设计模式之状态模式
概述状态模式是行为型设计模式的一种,状态模式中的行为是由状态来决定的,不同的状态下有不同的行为. 状态模式和策略模式相似,但是状态模式中的行为是平行的,不可替换的,策略模式中的行为是彼此独立的,可相互替换的. 状态模式将对象的行为封装在不同的状态对象中,将对象的状态从对象中分离出来,客户端无需关心对象的当前状态和状态转换.定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类原创 2016-08-17 23:11:28 · 706 阅读 · 0 评论 -
Java设计模式之责任链模式
概述责任链模式是行为型模式,该模式中包含了一些命令对象和一系列的处理对象,每一个对象都都保有对其下家的引用.如果我们将链中的每个节点看做是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链的首端发出,依次传到下一个节点处理.直到链上链上的某一个对象决定处理此请求,客户端并不需要知道那个对象处理的.定义使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象链接成一条链原创 2016-08-19 00:24:45 · 1252 阅读 · 0 评论 -
Java设计模式之命令模式
概述命令模式是行为型设计模式之一.我们接触较多的命令模式个例无非就是程序菜单命令. 如我们执行 关机 命令,系统就会执行一些列操作(如暂停处理事件,保存系统配置,结束进程等),对于这一系列命令,用户不用去管,用户只需要点击系统的关机按钮即可完成如上一系列命令. 命令模式其实就是将一系列的方法调用封装,用户只需要调用一个方法执行即可.定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参原创 2016-08-19 23:13:30 · 453 阅读 · 0 评论 -
Java设计模式之观察者模式
概述观察者模式是一个使用率非常高的模式,观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式, 这个模式有一个非常重要的作用就是解耦,将被观察者和观察者之间的依赖降到最小. 像我们进场使用的Adapter就使用了观察者模式,当数据集发生变化的时候,通知Adapter更新.定义定义对象间的一种一对多的依赖关系.使得每当一个对象改变状态,则所有的依赖于它的对象都会得原创 2016-08-20 23:28:31 · 1965 阅读 · 0 评论 -
Android 源码解析之Adapter和AdapterView与适配器模式
概述在Android中大量存在着适配器模式,其中的设计思路就是Adapter(提供数据)设在到AdapterView(展示数据集合的视图),其中Adapter体系结构如下而AdapterView有ListView、GridView、Spinner和ExpandableListView等,Adapter和AdapterView又使用了观察者模式, 其中Adapter相当于被观察者,AdapterVi原创 2016-10-11 23:55:49 · 4566 阅读 · 0 评论