设计模式
文章平均质量分 97
设计模式系列相关文章
youthlql
如果图片显示有问题请看置顶文章
展开
-
设计模式-05.03-行为型-状态&迭代器
文章目录状态模式【重要】什么是有限状态机?状态机实现方式一:分支逻辑法状态机实现方式二:查表法状态机实现方式三:状态模式迭代器模式【重要】迭代器模式的原理和实现迭代器模式的优势在遍历的同时增删集合元素会发生什么?如何应对遍历时改变集合导致的未决行为?如何在遍历的同时安全地删除集合元素?如何设计实现一个支持“快照”功能的iterator?问题描述解决方案一解决方案二1、文章可能会优先更新在Github,个人博客【包括文章纠错与增加内容】。其它平台会晚一段时间。个人博客备用地址2、如果Github很卡,可原创 2021-09-17 10:19:55 · 485 阅读 · 2 评论 -
设计模式-05.02-行为型-策略&职责链
文章目录策略模式【常用】策略模式的原理与实现策略的定义策略的创建策略的使用如何利用策略模式避免分支判断?案例:文件排序问题与解决思路代码实现与分析代码优化与重构职责链模式Demo案例-学校采购Approver【抽象类】PurchaseRequestDepartmentApproverCollegeApproverViceSchoolMasterApproverSchoolMasterApproverClient职责链模式的原理和实现职责链模式的应用场景举例Servlet FilterSpring Inter原创 2021-09-17 10:18:40 · 504 阅读 · 0 评论 -
设计模式-05.01-行为型-观察者&模板模式
文章目录观察者模式【常用】Demo案例-天气预报方案一WeatherDataCurrentConditionsClient问题分析观察者模式方案Subject【接口】Observer【接口】WeatherDataCurrentConditionsBaiduSiteClient原理及应用场景剖析基于不同应用场景的不同实现方式如何实现一个异步非阻塞的EventBus框架?异步非阻塞观察者模式的简易实现EventBus 框架功能需求介绍手把手实现一个 EventBus 框架SubscribeObserverAct原创 2021-09-17 10:17:07 · 535 阅读 · 0 评论 -
设计模式-04.02-结构型设计模式-门面模式&组合模式&享元模式
文章目录门面模式(外观模式)【不常用】门面模式的原理与实现Demo案例-影院管理传统方案门面模式代码TheaterLightStereoScreenProjectorPopcornDVDPlayerHomeTheaterFacade门面模式的应用场景举例解决易用性问题解决性能问题解决分布式事务问题组合模式【不常用】组合模式的原理与实现组合模式的应用场景举例享元模式【不常用】享元模式原理与实现享元模式在文本编辑器中的应用享元模式 vs 单例、缓存、对象池我们先来看享元模式跟单例的区别我们再来看享元模式跟缓存的原创 2021-07-04 01:23:01 · 624 阅读 · 2 评论 -
设计模式-04.01-结构型设计模式-代理模式&桥接模式&装饰器模式&适配器模式
文章目录引言代理模式【常用】静态代理动态代理cglib代理代理模式的原理解析动态代理的原理解析代理模式的应用场景业务系统的非功能性需求开发代理模式在 RPC、缓存中的应用代理模式在缓存中的应用桥接模式【常用】Demo案例-手机操作问题需求传统方案解决手机操作问题分析使用桥接模式的代码Brand【接口】Phone【抽象类】VivoXiaoMiFoldedPhoneUpRightPhoneClient桥接模式的原理解析桥接模式的应用举例桥接模式的注意事项和细节装饰器模式【常用】Demo案例-咖啡订单项目星巴克咖原创 2021-07-04 01:22:02 · 920 阅读 · 1 评论 -
设计模式-03.02-创建型设计模式-工厂模式&建造者模式&原型模式
文章目录工厂模式【常用】简单工厂(Simple Factory)工厂方法(Factory Method)那什么时候该用工厂方法模式,而非简单工厂模式呢?抽象工厂(Abstract Factory)如何设计实现一个Dependency Injection框架?工厂模式和 DI 容器有何区别?DI 容器的核心功能有哪些?如何实现一个简单的 DI 容器?最小原型设计提供执行入口配置文件解析核心工厂类设计建造者模式【常用】为什么需要建造者模式?与工厂模式有何区别?原型模式【不常用】原型模式的原理与应用原型模式的实现原创 2021-07-04 01:20:54 · 945 阅读 · 0 评论 -
设计模式-03.01-创建型-单例设计模式【万字文系列】
文章目录前言创建型结构型行为型单例模式【常用】为什么要使用单例?实战案例一:处理资源访问冲突实战案例二:表示全局唯一类如何实现一个单例?饿汉式(静态变量)饿汉式(静态代码块)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)懒汉式(线程不安全)双重检测静态内部类枚举单例存在哪些问题?单例对 OOP 特性的支持不友好单例会隐藏类之间的依赖关系单例对代码的扩展性不友好单例对代码的可测试性不友好单例不支持有参数的构造函数有何替代解决方案?如何理解单例模式中的唯一性?如何实现线程唯一的单例?如何实现集群环境原创 2021-07-04 01:19:34 · 818 阅读 · 9 评论 -
设计模式-02.经典设计原则-第二节【依赖反转,迪米特】
文章目录设计模式经典设计原则-第二节依赖反转原则(DIP)控制反转(IOC)依赖注入(DI)依赖注入框架(DI Framework)什么是依赖反转原则?KISS原则和YAGNI原则代码行数越少就越“简单”吗?代码逻辑复杂就违背 KISS 原则吗?如何写出满足 KISS 原则的代码?YAGNI 跟 KISS 说的是一回事吗?DRY 原则实现逻辑重复功能语义重复代码执行重复代码复用性(Code Reusability)怎么提高代码复用性?迪米特法则何为“高内聚、松耦合”?“迪米特法则”理论描述理论解读与代码实战原创 2021-07-04 01:18:13 · 408 阅读 · 0 评论 -
设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离【万字长文系列】
文章目录设计模式经典设计原则-第一节单一职责原则(SRP)如何理解单一职责原则?如何判断类的职责是否足够单一?类的职责是否设计得越单一越好?开闭原则(OCP)如何理解“对扩展开放、修改关闭”?修改代码就意味着违背开闭原则吗?如何做到“对扩展开放、修改关闭”?如何在项目中灵活应用开闭原则?里式替换原则(LSP)如何理解“里式替换原则”?哪些代码明显违背了 LSP?接口隔离原则(ISP)如何理解“接口隔离原则”?把“接口”理解为一组 API 接口集合把“接口”理解为单个 API 接口或函数把“接口”理解为 OO原创 2021-06-13 19:20:36 · 1217 阅读 · 0 评论 -
设计模式-01.设计思想
文章目录设计思想基于接口而非实现编程如何解读原则中的“接口”二字?如何将这条原则应用到实战中?是否需要为每个类定义接口?多用组合少用继承为什么不推荐使用继承?组合相比继承有哪些优势?如何判断该用组合还是继承?如何通过封装、抽象、模块化、中间层等解耦代码?“解耦”为何如此重要?代码是否需要“解耦”?如何给代码“解耦”?1、文章可能会优先更新在Github,个人博客。其它平台会晚一段时间。个人博客备用地址2、如果Github很卡,可以在Gitee浏览,或者Gitee在线阅读,个人博客。Gitee在线阅读和原创 2021-06-13 19:17:21 · 1442 阅读 · 2 评论