![](https://img-blog.csdnimg.cn/20210531095744906.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 66
java中的23种设计模式及其应用
意田天
一件事,做到极致,也算成功
展开
-
23种设计模式总结
23种设计模式总结创建型模式Abstract Factory(抽象工厂)应用场景: spring 的beanFactory ,spring容器就是个大型的抽象工厂,不仅可以创建普通的bean实例,也可以创建bean工厂。Builder(建造者)描述: 将一个复杂的对象的构建与它的表示分离Factory Method(工厂方法)面向对象六大原则...原创 2021-06-16 14:53:09 · 15722 阅读 · 0 评论 -
设计模式之模板方法模式(TemplateMethod)
设计模式之模板方法模式模板方法模式代码实现模式的应用模板方法模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。代码实现package com.cyc.design.template;public class Main {原创 2021-06-16 13:52:20 · 18916 阅读 · 0 评论 -
设计模式之原型模式(Prototype)
原型模式原型模式浅克隆深克隆字符串需要深克隆吗StringBuilder 克隆原型模式原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。浅克隆package com.cyc.design.prototype.v1;/** * 浅克隆 */public class Test {原创 2021-06-15 16:29:33 · 11266 阅读 · 0 评论 -
设计模式之访问者模式(Visitor)
访问者模式(Visitor)在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变主要将数据结构与数据操作分离。 在结构不变的情况下动态改变对于内部元素的动作需求描述: 有一电脑组装机门店,需要将CPU,内存条,主板等,给与不同的客户不同的折扣。package com.cyc.design.visitor;/** * 电脑对象 */public class Computer { //原创 2021-06-14 19:03:21 · 11513 阅读 · 0 评论 -
设计模式之迭代器模式(Iterator)
迭代器模式迭代器模式数组演示链表演示相互替换容器遍历自己的遍历方式泛型版迭代JDK的迭代器迭代器模式迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示, 主要用于容器和容器遍历数据结构中的物理结构只有两种:第一种: 连续存储, 数组第二种: 不连续存储, 链表 每个储存位置不但储存当前值, 还储存一个内存地址, 指向下个值的地址数组演示package com.cyc.desig原创 2021-06-14 17:33:08 · 12643 阅读 · 1 评论 -
设计模式之代理模式(Proxy)
设计模式之代理模式代理模式方案一方案二方案三方案四方案五方案六(动态代理)方案七(动态代理)JDK动态代理逻辑图源码分析CGLIB动态代理spring aop基础注解的AOP代理模式需求: 有一辆坦克 , 想要记录坦克的移动时间和移动记录原始代码如下package com.cyc.design.proxy.v01;import java.util.Random;/** * 问题:我想记录坦克的移动时间 */public class Tank implements Movable {原创 2021-06-13 23:58:53 · 19069 阅读 · 0 评论 -
设计模式之享元模式(Flyweight)
享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象**意图:**运用共享技术有效地支持大量细粒度的对象。**主要解决:**在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建应用实例:JAVA 中的 Str原创 2021-06-13 16:21:26 · 11269 阅读 · 1 评论 -
设计模式之组合模式(Composite)
组合模式介绍组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。代码演示package com.cyc.design.composite;import java.util.ArrayList;import java.util.List;/** * 组合模式 */abstract class Node {原创 2021-06-11 14:55:17 · 11440 阅读 · 1 评论 -
设计模式之观察者模式(Observer)
观察者模式观察者模式问题代码实现版本一版本二版本三版本四版本五版本六版本七版本八java本身观察者小测试总结观察者模式在观察者模式中,事件源,观察者,事件是一个组合。事件源Source对象,拥有一堆Observer,然后他会发出一堆Event,Observer观察到Event之后会做出具体的反应。问题一个小孩,醒了会哭,需要有人照顾。代码实现版本一面向过程package com.cyc.design.observer.v1;/** * 披着面向对象外衣的面向过程 */pu原创 2021-06-10 14:52:21 · 12548 阅读 · 0 评论 -
设计模式之责任链模式(ChainOfResponsibility)
设计模式之责任链模式初始化场景描述存入数据库之前,过滤用户输入的文字。public class Servlet_Main { public static void main(String[] args) { Msg msg = new Msg(); msg.setMsg("大家好:),<script>,欢迎访问 ,大家都是996 "); //处理msg, 过滤敏感字,<,> 和996 String r原创 2021-06-06 18:04:01 · 16047 阅读 · 3 评论 -
设计模式之工厂模式(Factory)
设计模式之工厂模式简介工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。任何可以产生对象或者方法的类 ,都可以称之为工厂单例也是工厂,可以把他当做静态工厂为什么有了new 之后,还要有工厂可以灵活控制生产过程权限,修饰,日志。代码准备需求一任意订制交通工具,例如汽车,飞机,扫把新建父类接口public interface Moveabl原创 2021-06-02 22:45:01 · 19322 阅读 · 0 评论 -
设计模式之策略模式(Strategy)
设计模式之策略模式在jdk1.8之后,为了和之前的接口进行兼容,接口里面必须方法实现,因为要支持lambda表达式。comparator接口,就是用到了策略模式同样,java.lang中的comparable接口,也是策略模式...原创 2021-06-01 16:54:06 · 16070 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
设计模式之单例模式饿汉式这也是最常用的一种方式,它是线程安全的,它依靠JVM来实现线程安全,因为JVM加载一个class,只会加载一次。package com.mashibing.dp.singleton;/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 简单实用,推荐使用! * 唯一缺点:不管用到与否,类装载时就完成实例化 * Class.forName("") * (话说你不用的,你装载它干啥) */public class Mgr01 {原创 2021-06-01 11:25:10 · 19157 阅读 · 2 评论