design pattern
文章平均质量分 95
Dongguabai
这个作者很懒,什么都没留下…
展开
-
设计模式之门面模式
最近有点“堕落”,公众号更新频率太低,已经被好几个朋友吐槽了,节奏要找回来。后续会开启一个新的议题:Java 中的日志。这里借用《每天学习一点点之关于 Maven 的那些事儿(一)》中的一段话:在越来越卷的 Java 行业,动不动就是“分布式、高并发、架构设计”,还得让你从 JVM 的源码来分析下 synchornized,但很少会有人提到 Maven,其实相比那些花里胡哨的,Maven 才是真正与日常开发息息相关的“基本功”。跟 Maven 一样,我个人也觉得日志也是 Java 开发过程中容易被原创 2022-02-03 17:12:01 · 1139 阅读 · 1 评论 -
设计模式之工厂方法模式
相关文章:每天学习一点点之设计模式之简单工厂模式在简单工厂模式中,实例化产品对象的具体操作是在工厂类中完成的,在我们事先预知的情况下,可以根据需要去动态创建产品类,但是我们的预知是有限的,一旦客户端发生变化,这时候需要修改工厂类的源代码,不符合‘开闭原则“。工厂方法模式一个很重要的核心就是“将实例的生成交给子类”。在模版设计模式中,是在父类中规定处理流程,具体执行逻辑由子类去实现。在工厂方法模式中就是,父类规定实例的生成方式,但不决定要生成的具体的实例类,具体执行逻辑由子类去实现,也就是说父类扮原创 2020-06-05 09:49:47 · 219 阅读 · 0 评论 -
Spring 用了哪些设计模式?
1. 策略模式 2. 工厂方法模式 3. Builder模式 4. 小结 关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。1. 策略模式关于策略模式的使用方式,在Spring中其实比较简单,从本质上讲,策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。我们以发奖励为例进行讲解,比如我们在抽奖系统中,有多种奖励方式可供选择,比如积分,虚拟币和现..转载 2020-05-15 22:07:57 · 382 阅读 · 0 评论 -
设计模式之简单工厂模式
简单工厂模式也叫静态工厂模式,不属于 GOF 23 种设计模式。这个模式其实很简单,但是我觉得从这个模式中学到的最重要的是要逐渐锻炼出“设计模式”的思维,即不要仅仅局限在一个类上面。这时候就要想起那道经典的面试题了:面向对象的三个基本特征?封装、继承、多态简单工厂模式就是将创建对象(产品)实例的过程交由工厂类去实现,即将 new 的过程进行了封装,工厂类根据传入的参数返回不同的产品实例,而这些产品实例有统一的父类。就好比现在有“某些场景下尽可能的少用 if else” 的说法,并不是说真的可以完全原创 2020-05-09 17:24:44 · 314 阅读 · 0 评论 -
设计模式之模版模式
模版模式是我最喜欢的一个设计模式,也是最早尝试使用过的一个设计模式。根据《大话设计模式》中的描述:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。很关键的一点是算法,或者说函数的整体流程是不变的,但是部分流程是可变的、可扩展的,交由子类去实现。举一个简单的例子,比如考试,在系统中的流程是:系统创建考试 -&g...原创 2020-05-04 10:31:27 · 325 阅读 · 0 评论 -
设计模式之适配器模式
突然想到一句话:“软件开发不存在兼容问题,如果有问题,那么再加一层”。适配器模式应该是平时业务开发中无论是有意还是无意提到的比较多的一种设计模式。因为业务的变化是非常之快的,所以经常会出现“XXX 需要适配”一下,所以适配器模式也是个比较尴尬的模式,用的好,首先代码的复用性提高了,而且在对原有类不需改变或者改变不大的情况下可以扩展原有功能,从而快速完成新功能的开发,这是符合开闭原则的。但是如果用...原创 2020-05-04 00:23:20 · 406 阅读 · 0 评论 -
设计模式之迭代器模式
在《大话设计模式》是这么描述迭代器模式的:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。这个描述有点文绉绉的,个人更喜欢后面的一段描述:当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑迭代器模式。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。下面是在网上找的一张 UML 图相关链接见文末):[外...原创 2020-05-03 20:41:38 · 215 阅读 · 0 评论 -
使用动态代理,在Debug模式下,代理对象显示为null的分析
1、准备一个接口:2、准备接口的实现类,类中重写接口的方法:3、准备一个代理对象工厂,提供一个IService类型的成员变量,一个获取IService类型的代理对象的方法:4、编写测试类,获取代理对象,调用被代理对象的find()方法5、在代理工厂类中的获取代理对象的方法中,图片中红框的位置上打断点。6、Debug运行,查看得到的代理对象proxyServi...转载 2020-04-15 11:41:48 · 1181 阅读 · 0 评论 -
观察者模式小 Demo
Demo观察者:package com.example.observer;/** * 观察者 * @author Dongguabai * @date 2018/12/16 14:21 */public abstract class Observer { protected Subject subject; public Observer(Subject...原创 2018-12-16 15:01:33 · 193 阅读 · 0 评论 -
Microkernel 设计模式漫谈
转自:https://www.jianshu.com/p/a3ede1ce991c早期我在设计系统的时候,尚没有听过Microkernel设计模式。那时候我就在想,如何才能设计出来一个“长青系统”。它能够最大程度的顺应系统的演化,具有极强的扩展性,极好的模块化。直到前几天读《面向模式的软件架构》的时候,读到了Microkernel设计模式,才恍然发现我之前设计系统采取的一些措施和手段,实际...转载 2018-11-28 20:56:26 · 514 阅读 · 0 评论 -
Thread 中用到的两种设计模式
其实有时候不能简单说哪种设计用到了哪些设计模式,设计模式本身就是对很多代码设计经验的总结。模板模式模板模式的应用就比较好理解了。在创建线程一般使用构建 Thread 类或者实现 Runnable 接口(这种说法是错误的,最起码是不严谨的,在 JDK 中代表线程的就只有 Thread 这个类,线程的执行单元就是 run() 方法,你可以通过继承 Thread 然后重写 run() 方法实现自...原创 2018-12-02 21:04:38 · 3050 阅读 · 0 评论 -
MyBatis源码分析(Mapper动态代理的实现及执行流程)
首先简单回顾下代理模式静态代理概念:是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。简单代码演示:抽象接口:真实角色:代理角色:测试使用:动态代理概念:是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。在jdk的api中提供了java.l...原创 2018-08-27 01:33:48 · 4316 阅读 · 0 评论