随笔分类 -  设计模式

摘要:设计模式的用途(参考) 设计模式代表了最佳实践,通常被有经验的面向对象的软件开发人员采用。设计模式是软件开发人员在软件开发过程中面临一般问题的解决方案。这些解决方案是众多软件开发人员在相当长的时间的实验和错误总结出来的。 设计模式有哪些? 创建型 : 简单工厂、抽象工厂、单例模式、原型模式、建造者模 阅读全文
posted @ 2019-07-01 11:43 byebai95 阅读(218) 评论(0) 推荐(0) 编辑
摘要:解释器模式 Interpreter 解释器模式提供了评估语言的语法或者表达式的方式,属于行为型。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。该模式应用在 sql 解析、符号处理引擎等 意图: 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子 主要 阅读全文
posted @ 2019-03-20 17:30 byebai95 阅读(188) 评论(0) 推荐(0) 编辑
摘要:命令模式(Command) 将一个请求封装为一个对象,从而使我们可以用不同的请求对客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作 命令模式最初源于图形化用户界面设计,但现在广泛应用于企业应用设计。命令模式有助于系统更好的进行组织,并易于拓展。 模式角色包含:请求者、接收者、命令接口、 阅读全文
posted @ 2019-03-19 17:17 byebai95 阅读(231) 评论(0) 推荐(0) 编辑
摘要:代理模式定义(Proxy):提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样就可以在不修改原目标对象的前提下,提供额外的操作功能,扩展目标对象的功能 一、静态代理 常用于对原有业务逻辑的扩充,通过让代理类持有真实对象,然后再原有代码中调用代理类方法。 公共接口: 静态代理比较简单,通 阅读全文
posted @ 2019-03-18 15:02 byebai95 阅读(254) 评论(0) 推荐(0) 编辑
摘要:享元模式 Flyweight 享元设计模式主要目的是减少创建对象的数量,以减少内存占用和性能提升,这种类型的设计模式属于结构性模式,它提供减少对象数量从而改善应用所需的对象结构方式。 享元模式尝试重用现有的同类对象,如果未能找到匹配的对象,则创建新对象。 意图: 运用共享技术有效地支持大量细粒度的对 阅读全文
posted @ 2019-03-15 15:23 byebai95 阅读(134) 评论(0) 推荐(0) 编辑
摘要:状态模式 State 在状态模式中,类的行为是基于它的状态改变的,这种类型的设计模式属于行为型模式 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 Context 对象 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类 主要解决:对象的行为依赖于 阅读全文
posted @ 2019-03-14 18:48 byebai95 阅读(187) 评论(0) 推荐(0) 编辑
摘要:备忘录模式 Memento 备忘录模式:保持一个对象的某个状态,以便在适当的时候回复对象,备忘录模式属于行为型模式 意图:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 何时使用: 在很多时候我们需要记录一个对象的内部状态,这样做的目的是为了允许用户取消不确定或者错误的操 阅读全文
posted @ 2019-03-13 16:36 byebai95 阅读(154) 评论(0) 推荐(0) 编辑
摘要:观察者模式 Observer 在对象之间存在一对多关系时,使用观察者模式。比如一个对象被修改时,会通知其他对象,观察者模式属于行为型模式 意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被更新 何时使用:一个对象的状态发生改变,所有的依赖对象都得到 阅读全文
posted @ 2019-03-12 15:04 byebai95 阅读(166) 评论(0) 推荐(0) 编辑
摘要:仲裁者模式(Mediator) Mediator 模式又称为仲裁者模式或者中间者模式,所以起的作用就是仲裁和中间,帮助其他类之间进行交流。在仲裁者设计模式之中,明确两个概念, 仲裁者(Mediator)和组员(Colleague),不管组员有设么事情,都要向仲裁者汇报,仲裁者会根据全局的实际情况向其 阅读全文
posted @ 2019-03-12 14:37 byebai95 阅读(326) 评论(0) 推荐(0) 编辑
摘要:外观模式 Facade 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问的接口。这种设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 主要解决:降低访问复 阅读全文
posted @ 2019-03-11 15:56 byebai95 阅读(136) 评论(0) 推荐(0) 编辑
摘要:责任链模式 (ChainOfResponsibility) 目的: 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止 优点: 1.降低耦合度,它将请求的发送与接收解耦 2.简化了对象,使得对象不需要知道链的结构 3.增 阅读全文
posted @ 2019-03-11 15:24 byebai95 阅读(217) 评论(0) 推荐(0) 编辑
摘要:访问者模式 Visitor 意图:将数据结构与数据操作分离 主要解决:稳定的数据结构和易变的操作耦合问题 如何解决:在被访问的类里加一个对外提供接待者的接口 优点: 1.符合单以职责原则 2.优秀的扩展性 3.灵活性 缺点: 1.具体元素对访问者公布细节,违反了迪米尔特原型 2.具体元素变化比较困 阅读全文
posted @ 2019-03-06 14:44 byebai95 阅读(137) 评论(0) 推荐(0) 编辑
摘要:装饰器 Decorator 允许向一个现有的对象添加新的功能,同时又不改变其结构。这种设计类型属于结构性模式,它是作为现有类的一个包装 这种设计模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整的前提下,提供额外的功能。 意图:动态滴给一个对象添加一些额外的职责,就增加功能来说,装饰器相 阅读全文
posted @ 2019-03-05 13:48 byebai95 阅读(139) 评论(0) 推荐(0) 编辑
摘要:组合模式 Composite 组合模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分与整体的层次。这种类型的设计模式属于结构型设计模式 意图:将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致 阅读全文
posted @ 2019-03-04 15:51 byebai95 阅读(141) 评论(0) 推荐(0) 编辑
摘要:策略模式 Strategy 在策略模式中,一个类的行为或者其算法运行时更改,这种类型的设计模式属于行为型模式 意图:定义一系列的算法,把他们一个个封装起来,并且他们可以互相替换 主要解决: 在有多种算法相似的情况下, 使用 if else 带来的复杂难以维护 何时使用:一个系统有许多类,而区分他们的 阅读全文
posted @ 2019-03-04 14:35 byebai95 阅读(125) 评论(0) 推荐(0) 编辑
摘要:桥接模式 Bridge 桥接是用于把抽象化与实现化解耦,使得二者可以独立变化。属于结构型设计模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 目的: 将抽象部分与实现部分分离,使得他们可以独立变化 主要解决:在很多情况下,使用继承会造成类爆炸的问题,扩展不灵活 如何解决:抽象类依赖实 阅读全文
posted @ 2019-03-01 14:24 byebai95 阅读(268) 评论(0) 推荐(0) 编辑
摘要:在工厂模式的基础上:抽象工厂(AbstractFactory) 抽象工厂模式也就是不仅生产鼠标,同时生产键盘。 也就是 PC 厂商是个父类,有生产鼠标,生产键盘两个接口。 戴尔工厂,惠普工厂继承它,可以分别生产戴尔鼠标+戴尔键盘,和惠普鼠标+惠普键盘。 创建工厂时,由戴尔工厂创建。 后续工厂.生产鼠 阅读全文
posted @ 2019-02-28 20:04 byebai95 阅读(165) 评论(0) 推荐(0) 编辑
摘要:建造者模式(Builder): 使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,提供一种创建对象的最佳方式。 应用: 比如坑德基的汉堡、薯条、可乐、鸡翅是不变的,但是套餐是经常变化的 Java 中的 StringBuilder 如何使用: 一些基本部件不变,而其组合 阅读全文
posted @ 2019-02-27 14:08 byebai95 阅读(240) 评论(0) 推荐(0) 编辑
摘要:克隆:就是用一个物体复制若干个一摸一样的物体,同样在面向对象系统中,同样可以利用克隆技术来克隆若干个一摸一样的对象。 在平常创业一个对象是通过 new 一个对象,有事业务会非常复杂,这时可以通过对已经存在的对象复制就好了,这是编程中的“克隆”。 在原型模式中我们可以利用一个原型对象来指明我们所需要创 阅读全文
posted @ 2019-02-26 20:07 byebai95 阅读(299) 评论(0) 推荐(0) 编辑
摘要:单例模式(Singleton Pattern) 定义:确保某个类只有一个实例,并且自行实例化并向整个体系提供这个实例 需求:保证对象只创建一次 场景:线程池、缓存、日志对象、对话框等常被设计为单例。 Singleton 通过构造方法限定 private 避免类在外部被实例化,在同一个虚拟机范围内,S 阅读全文
posted @ 2019-02-19 15:00 byebai95 阅读(181) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示