
设计模式学习笔记
文章平均质量分 88
设计模式相关,代码全部由Java实现,但是又不仅仅是简单的描述设计模式,在相关的一些设计模式的文章中,增加了我对于原设计模式的一些猜想和缺陷指出以及重构后的实现。
五条Programmer
搞点事情
展开
-
【学习笔记】设计模式-解释器模式(Interpreter)
文章目录0 设计模式1 解释器模式2 实现思路3 需要的类4 具体实现4.1 Expression(表达式接口)4.2 接口实现类4.2.1 TerminalExpression(存储数据)4.2.2 判断规则之间关系4.3 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/1200064471 解释器模式解释器模式提供了评估语言的语法或表原创 2021-09-30 21:00:00 · 531 阅读 · 0 评论 -
【学习笔记】设计模式-状态模式(State)
文章目录0 设计模式1 状态模式2 实现思路3 需要的类4 具体实现4.1 State(状态接口)4.2 Context(内容类,聚合State)4.3 State的实现类4.3.1 StartState4.3.2 StopState4.4 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/1200064471 状态模式在状态模式中,类的行原创 2021-09-29 23:25:08 · 335 阅读 · 0 评论 -
【学习笔记】设计模式-模板方法模式(TemplateMethod)
文章目录0 设计模式1 模板方法模式2 实现思路3 需要的类4 具体实现4.1 Game(抽象类)4.2 GameSubclass(Game的子类)4.3 测试类5 扩展(对于模板方法的一些思考)5.1 对于模板方法的理解5.2 模板方法不加上final会怎样造成恶意操作6 思维导图7 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/1200064471 模板方原创 2021-09-29 00:21:31 · 524 阅读 · 0 评论 -
【学习笔记】设计模式-备忘录模式(Memento)
文章目录0 设计模式1 备忘录模式2 实现思路3 需要的类4 具体实现4.1 Memento(备忘录)4.2 Originator(目标对象)4.3 CareTaker(管理者)4.4 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/1200064471 备忘录模式备忘录模式主要的作用是保存一个对象的某个状态,以便在适当的时候恢复对象。备原创 2021-09-27 22:17:07 · 570 阅读 · 0 评论 -
【学习笔记】设计模式-原型模式/克隆模式(Prototype)
文章目录0 设计模式1 原型模式2 实现思路2.1 浅克隆2.2 深克隆3 需要的类4 具体实现4.1 浅克隆4.2 深克隆5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/1200064471 原型模式原型模式的本质就是克隆,原型就相当于是一个可供复制的模板,在我们日常使用的时候,无需重新new对象和赋值,直接克隆对象即可。对象的创建方式有两原创 2021-09-26 22:51:46 · 347 阅读 · 0 评论 -
【学习笔记】设计模式-命令模式(Command/Action/Transaction)
文章目录0 设计模式1 命令模式2 实现思路3 需要的类4 具体实现4.1 Order(命令接口)4.2 Stock(请求类)4.3 命令接口的实现类4.3.1 SellStockOrder4.3.2 BuyStockOrder4.4 Broker(命令调用类)4.5 测试类5 扩展15.1 上述实例中存在的问题5.2 修改实例,实现链式添加命令6 扩展2(引入工厂模式+策略模式)6.1 扩展1中存在的问题6.2 修改实例:引入工厂+策略6.2.1 未修改:Order(命令接口)6.2.2 新增:Opera原创 2021-09-25 21:21:49 · 465 阅读 · 0 评论 -
【学习笔记】设计模式-桥接模式(Bridge)
文章目录0 设计模式1 桥接模式2 实现思路3 需要的类4 具体实现4.1 DrawAPI(桥接接口)4.2 桥接实现类4.2.1 GreenCircle4.2.2 RedCircle4.3 Shape(抽象类)4.4 Circle(Shape的实现类)4.5 测试类5 扩展5.1 实例中的缺陷设想5.2 实例改造5.2.1 未改变:DrawAPI(,桥接接口)5.2.2 新增:桥接接口的子接口(只起标志作用)5.2.3 修改:桥接子接口的实现类(原本是直接实现桥接接口)5.2.4 未改变:Shape(抽象原创 2021-09-25 20:35:28 · 742 阅读 · 0 评论 -
【学习笔记】设计模式-适配器模式(Adapter/Wrapper)
文章目录0 设计模式1 适配器模式2 实现思路3 需要的类4 具体实现4.1 MediaPlayer(基本实体类的接口)4.2 AdvancedMediaPlayer(高级实体类的接口)4.3 高级实体类(实现高级接口)4.3.1 Mp4Player4.3.2 VlcPlayer4.4 MediaAdapter(转换器)4.5 AudioPlayer(基本实体类,原本只支持播放MP3)4.6 测试类5 扩展(引入工厂,优化上述实例)5.1 上述实例中存在的一些问题5.2 解决方案5.3 升级后的实例5.3.原创 2021-09-23 23:08:37 · 1086 阅读 · 0 评论 -
【学习笔记】设计模式-构造器模式(Builder)
文章目录0 设计模式1 构造器模式2 实现思路2.1 Java中典型的Builder模式2.2 复杂构造者模式3 需要的类3.1 Java典型的Builder模式需要的类3.2 复杂构造者模式需要的类4 具体实现4.1 Java典型的Builder模式具体实现4.1.1 Person(需要构造的类,构造器放在其内部,用静态内部类表示)4.1.2 Location(Person中以用的类)4.1.3 测试类4.2 复杂构造者模式具体实现4.2.1 TerrainBuilder(构造器接口)4.2.2 Terr原创 2021-09-22 23:31:55 · 4939 阅读 · 0 评论 -
【学习笔记】设计模式-访问者模式(Visitor)
文章目录0 设计模式1 访问者模式2 实现思路3 需要的类4 具体实现4.1 FruitPart(实体类的抽象)4.2 FruitPart的实现类4.2.1 Apple4.2.2 Banana4.2.3 WaterMelon4.3 Fruit(聚合了多种具体实体的类)4.4 Visitor(访问者接口)4.5 具体访问者4.5.1 PersonalVisitor4.5.2 WholesalerVisitor4.6 测试类5 扩展6 思维导图7 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这原创 2021-09-21 19:16:16 · 252 阅读 · 0 评论 -
【学习笔记】设计模式-迭代器模式(Iterator)
文章目录0 设计模式1 迭代器模式2 实现思路3 需要的类4 具体实现4.1 Iterator(迭代器接口)4.2 Container(用户获取迭代器的接口)4.3 NameRepository(实际需要迭代的实体类,实现Container接口)4.4 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/120006447?spm=1001.20原创 2021-09-18 00:11:54 · 253 阅读 · 0 评论 -
【学习笔记】设计模式-代理模式(Proxy)
文章目录0 设计模式1 代理模式2 实现思路2.1 静态代理实现思路2.2 动态代理执行过程和实现思路2.2.1 JDK动态代理执行过程2.2.2 动态代理3 需要的类3.1 静态代理需要的类3.2 动态代理需要的类4 具体实现4.1 静态代理具体实现4.1.1 Movable接口4.1.2 Tank(被代理的实体类,实现Movable)4.1.3 代理类(实现Movable)4.1.4 测试类4.2 动态代理具体实现4.2.1 Movable接口4.2.2 Tank(实现Movable)4.2.3 Log原创 2021-09-17 00:12:19 · 212 阅读 · 0 评论 -
【学习笔记】设计模式-组合模式(Composite)
文章目录0 设计模式1 组合模式2 实现思路3 需要的类4 具体实现4.1 Node4.2 BranchNode4.3 LeafNode4.4 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/120006447?spm=1001.2014.3001.55021 组合模式组合模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。原创 2021-09-14 20:13:44 · 209 阅读 · 0 评论 -
【学习笔记】设计模式-享元模式(Flyweight)
文章目录0 设计模式1 享元模式2 实现思路2.1 享元模式2.2 享元模式+组合模式3 需要的类4 具体实现4.1 Shape接口4.2 Circle(接口实现类)4.3 ShapeFactory4.4 测试类5 思维导图6 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/120006447?spm=1001.2014.3001.55021 享元模式享元模式原创 2021-09-13 21:38:04 · 453 阅读 · 0 评论 -
【学习笔记】设计模式-策略模式(Strategy)
文章目录0 设计模式1 策略模式2 实现思路2.1 Comparable实现思路2.2 Comparator实现思路3 需要的类3.1 Comparable需要的类3.2 Comparator需要的类4 具体实现4.1 Comparable具体实现4.1.1 定义Comparable接口4.1.2 Comparable接口的实现类4.1.3 测试类4.2 Comparator具体实现4.2.1 比较的实体类4.2.2 Comparator接口4.2.3 Comparator接口实现类4.2.4 Sorter原创 2021-09-12 17:50:47 · 146 阅读 · 0 评论 -
【学习笔记】设计模式-观察者模式(Observer)
文章目录0 设计模式1 观察者模式2 实现思路3 需要的类4 具体实现4.1 Event(事件接口)4.2 WakeUpEvent(事件接口实现类)4.3 Observer(监听器接口)4.4 监听器接口实现类4.4.1 Dad4.4.2 Mum4.4.3 Dog4.5 Child(被观察者)4.6 测试类5 扩展5.1 对观察者注入的方式进行扩展思考(引入策略模式)5.1.1 Child(不再进行观察者的注册了,交给策略)5.1.2 ObserverStrategy(策略接口)5.1.3 策略接口实现类5原创 2021-09-11 17:51:23 · 741 阅读 · 0 评论 -
【学习笔记】设计模式-责任链模式(Chain Of Responsibility)
文章目录0 设计模式1 责任链模式2 实现思路3 需要的类4 具体实现4.1 Filter(创建过滤器接口)4.2 多个实现过滤器接口的具体过滤器4.2.1 FaceFilter(将:) 替换为 ^V^)4.2.2 HtmlFilter(将< 替换为 [ 将> 替换为 ])4.2.3 SensitiveFilter(将996 替换为 007)4.3 FilterChain(实现过滤器接口的具体责任链)4.4 Message(消息实体,根据实际情况完全可以用一个字符串去替代)4.5 测试类5原创 2021-09-10 20:57:10 · 682 阅读 · 1 评论 -
【学习笔记】设计模式-装饰器模式(Decorator)
文章目录0 设计模式1 装饰器模式2 实现思路3 需要的类4 具体实现4.1 Shape(接口)4.2 实体类(实现接口)4.2.1 Circle4.2.2 Rectangle4.3 ShapeDecorator(实现接口的抽象类)4.4 RedShapeDecorator(继承装饰器的扩展装饰器类)4.5 测试类(面向装饰器去调用)5 扩展(设想:链式装饰器)5.1 扩展思路5.2 扩展实现5.2.1 Shape(接口)5.2.2 实体类(实现接口)5.2.3 ShapeDecorator(实现接口的抽象原创 2021-09-09 23:06:54 · 735 阅读 · 0 评论 -
【学习笔记】设计模式-调停者/中介者(Mediator)
文章目录0 设计模式1 调停者/中介者2 实现思路3 需要的类4 具体实现4.1 User(发送消息的实体)4.2 ChatRoom(中介类)4.3 测试类5 扩展多实体测试6 思维导图7 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/qq_42874315/article/details/120006447?spm=1001.2014.3001.55021 调停者/中介者在学习中介者模式之前建议先去阅读门面模式原创 2021-09-09 00:20:18 · 631 阅读 · 0 评论 -
【学习笔记】设计模式-门面/外观模式(Facade)
文章目录0 设计模式1 门面/外观模式2 实现思路3 需要的类4 具体实现4.1 Shape接口4.2 Shape接口的实现类4.2.1 Circle4.2.2 Rectangle4.2.3 Square4.3 Shape的门面类4.4 测试类5 扩展5.1 设想1(链式+门面)5.1.1 修改后的门面5.1.2 修改后的测试类5.2 设想2(门面+工厂)6 思维导图7 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式https://blog.youkuaiyun.com/原创 2021-09-07 22:44:18 · 990 阅读 · 1 评论 -
【学习笔记】设计模式-工厂模式(Factory)
文章目录0 设计模式1 工厂模式2 实现思路2.1 工厂方法实现思路2.2 抽象工厂实现思路3 需要的类3.1 工厂方法所需类3.2 抽象方法所需类4 具体实现4.1 工厂方法的实现4.1.1 Moveable接口4.1.2 Moveable接口的实现类4.1.3 简单工厂4.1.4 测试类4.2 抽象工厂的实现4.2.1 AbstractFactory4.2.2 抽象类4.2.3 实现类4.2.4 工厂方法(继承抽象工厂)4.2.5 测试类5 扩展5.1 工厂方法扩展5.1.1 对于工厂方法的设想5.1.原创 2021-09-01 22:03:52 · 749 阅读 · 0 评论 -
【学习笔记】设计模式-单例模式(Singleton)
文章目录0 设计模式1 单例模式2 实现思路2.1 饿汉式2.2 懒汉式2.3 静态内部类(推荐使用)2.4 枚举(推荐使用)3 具体实现3.1 饿汉式3.1.1 常见的写法3.1.2 另一种写法3.2 懒汉式3.2.1 简单的懒汉式3.2.2 通过synchronized解决线程不安全的问题3.2.3 缩小同步代码块3.2.4 双重检查3.3 静态内部类3.4 枚举4 思维导图5 示例源码地址最后0 设计模式不了解设计模式的小伙伴可以通过这篇文章先了解一下什么是设计模式https://blog.cs原创 2021-08-31 22:03:00 · 171 阅读 · 0 评论 -
【学习笔记】设计模式(Design Pattern)
文章目录0 分享一下我的学习经历1 基本概念2 设计模式的种类2.1 创造性2.2 结构性2.3 行为型3 思想3.1 可维护性(Maintainability)3.2 可复用性(Reusability)3.3 可扩展性(Extensibility/Scalability)3.4 灵活性(Flexibility/Mobility/Adaptability)4 六大设计原则4.1 单一职责原则(SRP)4.2 开闭原则(OCP)4.3 里氏替换原则(LSP)4.4 依赖倒置原则(DIP)4.5 接口隔离原则(原创 2021-08-30 22:05:32 · 943 阅读 · 0 评论