设计模式
文章平均质量分 78
设计模式的点点滴滴
独守丶轩
这个作者很懒,什么都没留下…
展开
-
设计模式之职责链模式
文章目录职责链模式基本介绍代码示例注意事项和细节 职责链模式 基本介绍 职责链模式,又叫责任链模式,为请求创建了一个接收者对象的链。这种模式对请求的发送者和接收者进行解耦。 职责链模式通常让每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它就会把请求传给下一位接收者,以此类推。 这种设计模式属于行为型模式。 代码示例 public class PurChase { private float price = 0.0f; public PurChase(float原创 2021-07-08 18:24:41 · 153 阅读 · 0 评论 -
设计模式之策略模式
文章目录策略模式基本介绍代码示例注意事项和细节 策略模式 基本介绍 策略模式中,定义算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 这算法体现了几个设计原则,第一,把变化的代码从不变的代码中分离出来;第二,针对接口编程而不是具体类(定义了策略接口);第三,多用组合/聚合,少用继承(客户通过组合方式使用策略)。 代码示例 public interface FlyBehavior { void fly(); } public class BadFly imp原创 2021-07-08 17:48:45 · 107 阅读 · 0 评论 -
设计模式之状态模式
文章目录状态模式基本介绍代码示例注意事项和细节 状态模式 基本介绍 状态模式:它主要用来解决对象再多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。 代码示例 public abstract class State { public abstract void deductMoney(); public abstract boolean raffle(); pub原创 2021-07-07 22:42:01 · 110 阅读 · 0 评论 -
设计模式之解释器模式
文章目录解释器模式基本介绍 解释器模式 基本介绍 在编译园里中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看成是解释器。 解释器模式:给定一个表达式,定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的表达式。 ...原创 2021-07-07 20:28:55 · 149 阅读 · 0 评论 -
设计模式之备忘录模式
文章目录备忘录模式基本介绍代码示例注意事项和细节 备忘录模式 基本介绍 备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保持这个状态。这样以后就可将该对象恢复到原先保存的状态。 备忘录模式输入行为型模式。 代码示例 public class Memento { private int vit; private int def; public Memento(int vit, int def) { this.vit = vit;原创 2021-07-07 14:50:37 · 142 阅读 · 0 评论 -
设计模式之中介者模式
文章目录中介者模式基本介绍代码示例注意事项和细节 中介者模式 基本介绍 中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 中介者模式属于行为型模式,使代码易于维护。 比如MVC模式,C是M和V的中介者,在前后端交互时起到了中间人的作用。 代码示例 public abstract class Mediator { public abstract void register(String colleagueN原创 2021-07-07 14:27:46 · 101 阅读 · 0 评论 -
设计模式之观察者模式
文章目录观察者模式基本介绍代码示例 观察者模式 基本介绍 观察者模式:对象之间多对一的一种设计方案,被依赖的对象对Subject,依赖的对象为Observe,Subject统治Observe变化。Subject是一的一方,Observe是多的一方。 代码示例 public interface Observer { void update(float temperature); } public class TencentObserver implements Observer{ pr原创 2021-07-07 11:03:01 · 46 阅读 · 0 评论 -
设计模式之迭代器模式
文章目录迭代器模式基本介绍代码示例注意事项和细节 迭代器模式 基本介绍 迭代器模式是常用的常用的设计模式,属于行为型模式。 如果我们的集合元素是用不同的方式实现的的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式。 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露内部结构。 代码示例 public class Department {原创 2021-07-06 21:57:32 · 103 阅读 · 0 评论 -
设计模式之访问者模式
文章目录访问者模式基本介绍代码示例注意事项和细节 访问者模式 基本介绍 访问者模式,封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 主要将数据结构与数据操作分离,解决数据结构和操作耦合性的问题。 访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口。 访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作“污染”这些对象的类,可以选用访问者模式。 代码示例 publ原创 2021-07-06 17:56:14 · 51 阅读 · 0 评论 -
设计模式之命令模式
文章目录命令模式基本介绍代码示例注意事项和细节 命令模式 基本介绍 命令模式:在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道被请求的操作是哪个。我们只需要在程序运行时指定具体的请求接收者就可以,此时,可以使用命令模式来进行设计。 命令模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。 在命名模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求,同时命令模式也支持可撤销的操作。 通俗易懂的理解:将军发布命令,士兵去原创 2021-07-06 15:19:50 · 67 阅读 · 0 评论 -
设计模式之模板方法模式
文章目录模板模式基本介绍代码示例钩子方法 模板模式 基本介绍 模板方法模式,又叫模板模式。在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式执行。 简单说,模板模式定义一个操作的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重新定义该算法的某些步骤。 这种类型的设计模式属于行为型模式。 代码示例 public abstract class SoyMilk { //模板方法定义成final,不让子类去覆盖原创 2021-07-06 14:31:41 · 66 阅读 · 0 评论 -
设计模式之代理模式
文章目录代理模式基本介绍静态代理基本介绍代码示例优缺点动态代理基本介绍代码示例Cglib代理基本介绍代码示例 代理模式 基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。 代理模式有不同的形式,主要有三种:静态代理、动态代理和Cglib代理。 静态代理 基本介绍 静态代理在使用接口时,需要定义接口或者父类原创 2021-07-05 22:39:47 · 40 阅读 · 0 评论 -
设计模式之享元模式
文章目录享元模式基本介绍代码示例注意事项和细节 享元模式 基本介绍 享元模式也叫蝇量模式:运用共享技术有效的支持大量细粒度的对象。 常用于系统底层开发,解决系统的性能问题。像数据库建连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。 享元模式能够解决重复对象的内存浪费问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。 享元模式经典的应用场景就是池技术了,String常原创 2021-07-05 10:14:38 · 51 阅读 · 0 评论 -
设计模式之外观模式
文章目录外观模式基本介绍代码示例注意事项和细节 外观模式 基本介绍 外观模式,也叫“过程模式”:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式通过定义一个一致的接口,用于屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。 代码示例 public class DVDPlayer { //使用饿汉式单例模式 private static DVDPlayer instance =原创 2021-07-04 21:36:21 · 53 阅读 · 0 评论 -
设计模式之组合模式
文章目录组合模式基本介绍代码示例注意事项和细节 组合模式 基本介绍 组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。 组合模式一句树形结构来组合对象,用来表示部分以及整体层次。 这种类型的设计模式属于结构型模式。 组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。 组合模式解决这样的问题,当我们要处理的对象可以升成一颗树形结构,而我们要对树上的节点和叶子进行操作时,它能够提供一致的方式,而不原创 2021-07-04 20:54:03 · 49 阅读 · 0 评论 -
设计模式之装饰者模式
文章目录装饰者模式基本介绍代码示例 装饰者模式 星巴克咖啡订单项目: 咖啡种类:Espresso、ShortBlack、LongBlack、Decaf。 调料:Millk、Soy、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便。 使用面向对象的的方法来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合。 基本介绍 装饰者模式:动态地将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则。 代码示例 public原创 2021-07-04 16:42:50 · 55 阅读 · 0 评论 -
设计模式之桥接模式
文章目录桥接模式基本介绍代码示例注意事项和细节 桥接模式 基本介绍 桥接模式是指:将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变。 桥接模式是一种结构型设计模式。 桥接模式基于类最小设计原则,通过使用封装、聚合以及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 代码示例 public interface Brand { void open(); void close(); void cal原创 2021-07-04 15:01:35 · 54 阅读 · 0 评论 -
设计模式之适配器模式
文章目录适配器模式基本介绍类适配器 适配器模式 基本介绍 适配器模式将某个类的接口转换成客户端期望的另一个接口便是,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器。 适配器模式属于结构型模式。 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。 工作原理: 适配器模式:将一个类的接口转换成另一个接口,让原本接口不兼容的类可以兼容。 从用户的角度看不到被适配者,是解耦的。 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。 用户收到反原创 2021-07-04 14:32:08 · 77 阅读 · 0 评论 -
设计模式之建造者模式
文章目录传统方法代码示例优缺点建造者模式基本介绍代码示例注意事项和细节 传统方法 盖房项目需求: 需要建房子:这一过程为打桩、砌墙、封顶。 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的。 代码示例 public abstract class AbstractHouse { public abstract void buildBasic(); public abstract void buildWall(); public abstra原创 2021-07-03 21:39:38 · 58 阅读 · 0 评论 -
设计模式之原型模式
文章目录传统方法代码示例优缺点原型模式基本介绍代码示例浅拷贝深拷贝 传统方法 现在有一只羊tom,姓名为:tom,年龄为:1,颜色为:白色。编写程序创建和tom羊属性完全相同的10只羊。 代码示例 public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) {原创 2021-07-03 15:08:40 · 41 阅读 · 0 评论 -
设计模式之工厂模式
文章目录传统方法代码示例优缺点简单工厂模式基本介绍代码示例工厂方法模式基本介绍代码示例抽象工厂模式基本介绍代码示例 传统方法 一个披萨项目:要便于披萨种类的扩展,要便于维护 披萨种类很多(GreekPizza、CheesePizza) 披萨的制作有prepare,bake,cut。box 完成披萨店订购功能 代码示例 public abstract class Pizza { private String name; public void setName(String name原创 2021-07-02 21:28:23 · 57 阅读 · 0 评论 -
设计模式之单例模式
文章目录单例模式介绍饿汉式(静态常量)代码示例优缺点饿汉式(静态代码块)代码示例优缺点懒汉式(线程不安全)代码示例优缺点懒汉式(线程安全,同步方法)代码示例优缺点懒汉式(线程安全,同步代码块)代码示例优缺点双重检查代码示例优缺点静态内部类代码示例优缺点枚举代码示例优缺点注意事项和细节 单例模式 介绍 所谓类的单例设计模式,就是采取一定的方法保证整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法(静态方法)。 饿汉式(静态常量) 代码示例 public class Sin原创 2021-07-02 15:41:27 · 108 阅读 · 0 评论 -
设计模式之七大原则
文章目录设计模式的目的单一职责原则基本介绍案例注意事项和细节接口隔离原则基本介绍案例依赖倒转原则基本介绍案例注意事项和细节里氏替换原则开闭原则迪米特法则合成复用原则 设计模式的目的 重用性:相同功能的代码,不用多次编写。 可读性:编程规范性,便于其他程序员的阅读和理解。 可扩展性:当需要增加新的功能时,非常的方便。 可靠性:当增加新的功能后,对原来的功能没有影响。 使程序呈现高内聚,低耦合的特性。 单一职责原则 基本介绍 对类来说,级一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当原创 2021-07-01 16:33:08 · 441 阅读 · 0 评论