java设计模式
文章平均质量分 69
你佳哥
勿于浮沙筑高台
展开
-
实战java设计模式(二十四)职责链模式
目录1 介绍2 例子2.1 站台父类2.2 站台实现类2.3 主测试类3 总结3.1 核心结构3.2 核心代码结构1 介绍职责链模式也叫责任链模式,理解它可以用数据结构链表去理解。2 例子去火车站找人,假设家人不幸丢失,去一个陌生的地方找人,人生地不熟,先随便去个火车站或者汽车站找,如果没有找到警察叔叔就会说要不去飞机场试试看看,就这样一个个的找。2.1 站台父类abstract class Station{ //属性 public List<String> name原创 2020-11-14 16:24:19 · 110 阅读 · 0 评论 -
实战java设计模式(二十三)策略模式
目录1 介绍2 例子2.1 策略父类(老师的问题)2.2 不同的策略2.3 策略拥有者2.4 测试主类3 总结3.1 核心角色3.2 核心代码结构1 介绍策略模式适用于一个问题有多种解决方案的情况。2 例子假如在一个幼儿园大班,老师问怎么才能通过数学计算得到6这个数字,每个小朋友的方案都不一样,使用策略模式就非常方便了。2.1 策略父类(老师的问题)interface Strategy{ void get6();}2.2 不同的策略//加法策略class Add impleme原创 2020-11-14 15:30:50 · 87 阅读 · 0 评论 -
实战java设计模式(二十二)状态模式
目录1 介绍2 例子2.1 水接口2.2 水的三种状态的实现2.3 一杯具体的水(果汁)2.4 测试主类3 总结3.1 核心角色3.2 核心代码结构1 介绍类的行为是基于它的状态改变的。2 例子该项设计模式适用于那种类的功能方法随着类的状态改变该改变的场景。比如水的三种状态是随着温度的变换而变化的。2.1 水接口interface Water { void drink();//被喝 void chew();//被咀嚼 void steam();//用来蒸}2.2 水原创 2020-11-14 15:05:59 · 309 阅读 · 0 评论 -
实战java设计模式(二十一)解释器模式
目录1 介绍二级目录三级目录1 介绍待深挖二级目录三级目录原创 2020-11-14 20:12:55 · 325 阅读 · 0 评论 -
实战java设计模式(二十)备忘录模式
目录1 介绍2 例子2.1 需要存档的状态类2.2 游戏角色类2.3 存档类2.4 测试主类3 总结1 介绍保存一个对象的某个状态,以便在适当的时候恢复对象。常用是例子就是游戏存档。2 例子游戏中一个角色要打boss,可能失败可能成功,需要把打boss前的自己状态进行存档。2.1 需要存档的状态类class State { public int blood; public int energy;}2.2 游戏角色类class Hero { private int原创 2020-11-14 11:17:11 · 159 阅读 · 0 评论 -
实战java设计模式(十九)中介者模式
目录1 介绍2 例子2.1 中介者2.2 住户抽象2.3 住户实体2.4 测试主类3 总结1 介绍中介者模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。2 例子小区居民针对物业费情况要做一个讨论,每个居民都是依赖关系,要获取对方的信息,为了减少这种耦合,可以采用中介在中间传话的方式。2.1 中介者//中介者class Mediator{ //维护一个信息表 private String nowInfor=""; //获取 pub原创 2020-11-14 10:39:28 · 169 阅读 · 0 评论 -
实战java设计模式(十八)观察者模式
目录1 介绍2 例子2.1 观察者接口2.2 观察者实体2.3 被观察者2.4 测试主类3 总结3.1 核心角色3.2 核心代码结构1 介绍当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。2 例子假设有一个自然灾害观测站,当发生灾害的时候要通知到每一个在这里注册登记过的电视台,并且要第一时间播报给观众。2.1 观察者接口abstract class Observer { //向本台观众发送灾难预警 publ原创 2020-11-14 10:16:27 · 419 阅读 · 0 评论 -
实战java设计模式(十七)迭代器模式
目录1 介绍2 例子2.1 迭代器接口2.2 容器接口2.3 实现一个字符串容器2.4 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。2 例子设计字符串容器类,并且用迭代器去访问元素。2.1 迭代器接口//迭代器接口interface Iterator { //有没有下一个对象 boolean hasNext(); //返回一个对象 Object next();}2.2 容原创 2020-11-14 09:26:10 · 89 阅读 · 0 评论 -
实战java设计模式(十六)访问者模式
目录1 介绍2 例子2.1 可访问接口2.2 员工抽象类2.3 员工实现类2.4 访问者接口2.5 访问者实体2.6 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构例子来源:访问者模式一篇就够了,非常不错。1 介绍访问者模式实现对象数据和数据操作的解耦。2 例子一个公司有程序员和产品经理,年末了,需要做考核,CEO和CTO关注员工的考核指标不一样,CEO关心KPI,CTO关心产品数和代码行数,如果把CEO考核和CTO考核方式都写在员工类里面,这样耦合就大了,于是访问者模式就横空出原创 2020-11-13 17:28:29 · 128 阅读 · 0 评论 -
实战java设计模式(十五)命令模式
目录1 介绍2 例子2.1 电灯实体类2.2 命令接口2.3 实现命令2.4 测试主类3 例子升华4 总结4.1 核心角色4.2 关键代码结构1 介绍命令模式实现了指挥者和执行者之间的解耦。可以很好的实现指挥者对执行者的控制。2 例子以打开关闭电灯为例子,如果不采用命令模式,直接客户端调用电灯,耦合较大,针对较为复杂的情况如果需要撤销,较为麻烦。在二者之间加一个命令作为桥梁,可以很好的实现解耦,让命令对象去执行执行者的方法。2.1 电灯实体类//电灯接收者class Light{ //原创 2020-11-13 17:00:12 · 135 阅读 · 0 评论 -
实战java设计模式(十四)模版模式
目录1 介绍2 例子2.1 手机接口(模板)2.2 具体手机实现2.3 测试主类3 总结1 介绍一个抽象类公开定义了执行它的方法的方式/模板。和外观模式一样,非常简单,就是一个典型的依赖倒转的面向接口编程的设计模式。2 例子2.1 手机接口(模板)interface Phone{ //打电话 void call(); //发短信 void sendMessage(); //拍照 void photograph();}2.2 具体手机实现//小原创 2020-11-13 16:18:28 · 132 阅读 · 0 评论 -
实战java设计模式(十三)代理模式
目录1 介绍2 静态代理模式2.1 例子2.1.1 授课接口2.1.2 老师类2.1.3 代理老师(核心)2.1.4 测试主类2.2 总结3 动态代理3.1 例子3.2 总结4 Cglib代理1 介绍一个类代表另一个类的功能。2 静态代理模式2.1 例子2.1.1 授课接口//授课interface InterFaceTeach{ void teach();}2.1.2 老师类//老师类class Teacher implements InterFaceTeach{原创 2020-11-13 15:46:59 · 104 阅读 · 0 评论 -
实战java设计模式(十二)享元模式
目录1 介绍2 例子2.1 果汁接口2.2 水果实体(实现果汁接口)2.3 榨汁机工厂(核心)2.4 测试主类3 总结1 介绍享元,享元,共享元素,主要用于减少创建对象的数量,以减少内存占用和提高性能。说白了就是如果要创建同样的对象(只读不写),可以使用这种设计模式节省空间。2 例子用一个榨汁机的例子来描述,可能抽象的有些不对,但是核心内容应该是可以体会到。2.1 果汁接口//果汁接口interface Juice{ //榨出果汁 void juicer(); //获得原创 2020-11-13 15:27:01 · 311 阅读 · 0 评论 -
实战java设计模式(十一)外观模式
目录1 介绍2 例子2.1 每个步骤各自的类2.2 整合到一起2.3 测试主类3 总结1 介绍这是最简单的设计模式。一看就懂。适用于那种把多个办事流程封装到一起的情况。2 例子最好的例子就是把大象装进冰箱。2.1 每个步骤各自的类//第一步class First{ public void firstStep(){ System.out.println("打开冰箱门"); }}//第二步class Second{ public void secon原创 2020-11-13 11:43:39 · 66 阅读 · 0 评论 -
实战java设计模式(十)组合模式
目录1 介绍2 例子2.1 文件夹(文件)抽象父类2.2 添加一个接口适配器(可选)2.3 叶子节点的实现2.4 非叶子节点2.5 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍部分整体模式,是用于把一组相似的对象当作一个单一的对象。2 例子这样的情况非常使用于文件夹存放文件的情况,文件夹可以多级,如果为每级文件夹都定义一个类的话成本是非常高的。2.1 文件夹(文件)抽象父类//抽象父类abstract class FileFolder { //展示一下这个文原创 2020-11-13 11:27:13 · 187 阅读 · 0 评论 -
实战java设计模式(九)装饰器模式
装饰器模式是我本人觉得非常巧妙的一种设计模式,值得细细品味。目录1 介绍2 例子2.1 饮料抽象类2.2 咖啡实体2.3 加佐料的饮料抽象类(核心)2.4 实现加佐料的饮料2.5 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍允许向一个现有的对象添加新的功能,同时又不改变其结构。2 例子假设一个饮品店卖饮料,各个饮料口味不同(多糖、少糖、加奶、不加奶)价格也不一样。2.1 饮料抽象类//饮料的抽象类interface Drink { int cost();原创 2020-11-13 10:33:20 · 303 阅读 · 0 评论 -
实战java设计模式(八)桥接模式
目录1 介绍2 例子2.1 颜色抽象接口2.2 颜色实现2.3 手机抽象类2.4 手机实现2.5 测试主类3 总结1 介绍将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。用树形结构和乘法去理解。2 例子使用一个手机都有颜色的情况。比如手机有两种苹果和华为,手机都有红色、蓝色、绿色。如果每一种组合都要写一个类的话,就需要写6个类,成本较高,可以考虑使用桥接模式。把继承换成组合、聚合的方式。2.1 颜色抽象接口//颜色抽象类int原创 2020-11-13 10:15:02 · 167 阅读 · 0 评论 -
实战java设计模式(七)适配器模式
目录1 介绍2 类适配器2.1 例子2.1.1 原电源类(220V)2.1.2 适配接口2.1.3 适配器类2.1.4 测试主类2.2 核心角色2.3 核心代码结构3 对象适配器3.1 例子3.1.1 被适配类3.1.2 适配接口3.1.3 适配器3.1.4 测试主类3.2 核心角色3.3 核心代码结构4 接口适配器4.1 例子4.1.2 接口适配器4.1.3 适配器使用类4.2 核心代码结构5 总结1 介绍适配器模式将一个类的接口转换成客户希望的另外一个接口。2 类适配器2.1 例子使用一个22原创 2020-11-13 09:48:34 · 244 阅读 · 0 评论 -
实战java设计模式(六)建造者模式
目录1 介绍2 例子2.1 自行车类2.2 抽象建造者2.3 具体生产商2.4 指挥生产者2.5 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍使用多个简单的对象一步一步构建成一个复杂的对象。实现对象设计和创建解耦。2 例子假设要不同厂商生产不同牌子的自行车。2.1 自行车类//自行车类class Bicycle { private String type;//自行车的类型:电动的、非电动的 private String color;//颜色原创 2020-11-12 22:13:40 · 283 阅读 · 0 评论 -
实战java设计模式(五)原型模式
目录1 介绍2 例子(实现Cloneable接口)2.1 课程类2.2 学生类2.3 测试主类3 反序列化方法3.1 课程类(可序列化即可)3.2 学生类4 总结1 介绍用于创建重复的对象,同时又能保证性能。说白了,就是解决对象的复制问题,希望通过Object.clone()直接返回一个复制的对象,注意!!是深拷贝。2 例子(实现Cloneable接口)用一个学生类来做实验,学生类里面组合了一个课程。2.1 课程类//课程类class Course implements Cloneable {原创 2020-11-12 20:50:28 · 113 阅读 · 0 评论 -
实战java设计模式(四)抽象工厂模式
承上:实战java设计模式(三)工厂方法模式这里写目录标题1 介绍2 例子2.1 手机接口2.2 实现手机类2.3 充电器接口2.4 充电器实现2.5 抽象工厂接口2.6 工厂实现2.7 测试主类3 例子升华4 总结4.1 核心角色4.2 核心结构1 介绍工厂方法模式的问题是每一个工厂只能生产一种产品。试想这样一个场景一个厂要生产螺丝的同时要配对生产螺丝冒,生产乒乓球的同时配对生产乒乓球盒,生产产品的时候同时配对生产产品包装。2 例子还是手机生产的例子,但是生产手机的同时需要生产配对的手机充电器。原创 2020-11-12 19:37:33 · 336 阅读 · 0 评论 -
实战java设计模式(三)工厂方法模式
承上:实战java设计模式(二)简单工厂模式目录1 介绍2 例子2.1 手机接口2.2 手机类实现2.3 工厂父类2.4 工厂实现2.5 测试主类3 例子升华4 总结4.1 核心角色4.2 核心代码结构1 介绍回顾简单工厂模式,存在的问题产品和工厂存在违反了开闭原则,即增加了产品类,必须在工厂类中添加注册。工厂方法模式就是为了解决这样的问题。实现产品和工厂的解耦。2 例子以手机生产工厂生产手机为例子,手机有展示logo的功能,有华为、苹果、小米三种手机需要生产。2.1 手机接口//手机接口i原创 2020-11-12 17:04:02 · 444 阅读 · 3 评论 -
实战java设计模式(二)简单工厂模式
目录1 介绍2 例子2.1 手机接口2.2 具体手机类(实现手机接口)2.3 建立一个手机工厂2.4 测试主类3 例子升华3.1 手机接口3.2 手机类3.3 工厂类4 工厂模式总结4.1 工厂模式核心角色4.2 工厂模式核心代码结构1 介绍工厂模式提供了一种创建对象的最佳方式。2 例子使用工厂模式,按照指定手机品牌的名字生产一个手机对象。2.1 手机接口手机接口定义了手机应该具有的具体功能,本例仅仅做了手机显示logo的功能。//手机接口interface Phone{ //显示l原创 2020-11-12 11:11:08 · 563 阅读 · 3 评论 -
实战java设计模式(一)单例模式
目录1 介绍2 实现方式2.1 饿汉式(静态变量)2.2 饿汉式(静态代码块)2.3 懒汉式(线程不安全)2.4 懒汉式(线程安全)2.5 双重校验锁2.6 静态内部类方式2.7 枚举方式3 总结1 介绍单例模式属于创建型模式。单例模式创建的单例类只能有一个实例,并且是自己创建自己的唯一实例。使用场景:整个项目的配置类、项目的工具类等等。2 实现方式实现关键步骤:构造器私有化;(不让别人new)持有一个自己类型的引用;(怎么创建按照具体方法来)返回一个具体实例的方法;(给别人使用)同时原创 2020-11-12 10:06:22 · 238 阅读 · 3 评论 -
实战java设计模式(零)七大原则
23种设计模式是有其具体的实现依据的,既然别的程序可以按照23种设计模式的方法进行设计,那么这23种设计模式又是按照什么依据设计的呢?没错就是七大原则。序号原则名称解释我的理解1单一职责原则一个类只负责一项职责这是在类的设计层面,也符合类抽象、封装的特性2接口隔离原则实现类不应该依赖它不实现的接口方法只要依赖了某个接口,就应该实现里面所有抽象方法3依赖倒转原则类之间的依赖应该依赖其抽象面向接口编程4里氏替换原则引用基类的地方必须能透明地使用其原创 2020-11-12 09:25:02 · 201 阅读 · 4 评论 -
自学java设计模式(持续更新)
基于白嫖B站尚硅谷视频:尚硅谷Java设计模式(图解+框架源码剖析)目录1 写在前面2 七大原则2.1 单一职责原则2.1.1 基本介绍2.1.2 应用实例2.2 接口隔离原则2.3 依赖倒转(倒置)原则2.4 里氏替换原则2.5 开闭原则2.6 迪米特法则2.7 合成复用原则三级目录1 写在前面由Erich Gamma等人在1990年代由建筑设计领域引入到计算机科学领域;七大原则;23种设计模式;高内聚,低耦合;设计模式设计的七大原则;2 七大原则2.1 单一职责原则2.1.1 基原创 2020-11-11 20:39:06 · 834 阅读 · 1 评论