
设计模式
文章平均质量分 90
设计模式相关,代码全部由Java实现,但是又不仅仅是简单的描述设计模式,在相关的一些设计模式的文章中,增加了我对于原设计模式的一些猜想和缺陷指出以及重构后的实现。
五条Programmer
搞点事情
展开
-
【学习笔记】设计模式-桥接模式(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 评论 -
【学习笔记】设计模式-访问者模式(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 评论 -
利用设计模式消灭掉代码中的if-else
文章目录1 问题描述2 利用工厂模式+策略模式消灭掉代码中的if-else步骤2.1 创建水果策略接口(由具体的水果抽象出来的),继承InitializingBean接口。2.2 创建工厂2.3 创建水果策略接口的实现类2.3.1 Apple2.3.2 Banana2.3.3 Orange3 改造后的调用方式4 扩展西瓜5 比较6 总结7 注意事项最后1 问题描述我们先来看下述代码/** * @Author ChenJiahao(程序员五条) * @Date 2021/8/23 20:22 */原创 2021-08-23 21:11:56 · 1891 阅读 · 2 评论