设计模式
文章平均质量分 63
C0oOder
The more you learn, the more ignorant you become
展开
-
设计模式-行为型模式-状态模式 State
有限状态机是计算机重要的概念;原创 2022-06-09 22:39:50 · 84 阅读 · 0 评论 -
设计模式-行为型模式-模板方法模式 TemplateMethod
模板方法模式为代码提供一个模板。可以由实现不同功能的开发人员填写;目的是避免编写重复的代码,以便开发人员可以专注于核心逻辑;最好的方式是抽象类,重复的是实现方法,抽象方法就是开发人员关注的核心逻辑;比如说是钩子函数,AQS;前面也说了减少重复代码的作用;一般用作在类库中,公共行为封装在抽象类的具体方法中,业务逻辑交给具体的实现 ;有时间说一下 AQS模板方法吧。。。。这个就是比较好的例子;这个就是比较好的例子;······ 比较简单,不写了 按照上面的那个类图就好;...原创 2022-06-09 22:37:40 · 118 阅读 · 0 评论 -
设计模式-行为型模式-备忘录模式 Memento
封装对象是面向对象的基本原则之一,当对象添加功能,或者修改属性,并且需要保存当时的内部状态(可以理解为快照),可能后面会需要恢复;保存内部状态而不破坏其封装,并在以后阶段恢复其状态;需要执行回滚操作,就会使用备忘录模式,比如原子事务,其中一个失败,就恢复到原来的状态;根据角色来写吧,场景就是比如一个对象有较多的属性,然后一顿修改后,需要把属性恢复到原来的状态**发起者 **需要记住状态的对象备忘录 :存储状态管理者 : 这里可以理解成main方法 触发的动作执行效果...原创 2022-06-08 23:33:27 · 137 阅读 · 0 评论 -
设计模式-创建型模式-原型模式 Prototype
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象;也叫克隆模式;java 对象实现 Cloneable() 接口,并且重写 clone() 方法,得到原来对象的拷贝对象;但是有问题需要注意;浅拷贝和深拷贝java中的原始的拷贝方法(super.clone()) 是一个浅拷贝 ,次方法用来拷贝对象注:是一个本地方法;一个对象被拷贝,是一个对象的内存复制一份,指向另一个引用;其中基础类型是值拷贝,而引用类型拷贝是引用,而不是拷贝具体对象中的数据深拷贝的话,还是需要自己去实现clone() 方原创 2022-06-08 22:34:30 · 139 阅读 · 0 评论 -
设计模式-行为型模式-命令模式 Command
在面向对象的编程过程中,一个很重要的事情就是解耦合。比如说是在一个绘图软件中,需要处线段,点位,图形的方法,然后为了统一操作方法,和程序的可维护性;命令模式:CommandConcreteCommandReveiver测试 Client...原创 2022-06-05 22:50:49 · 139 阅读 · 0 评论 -
设计模式-结构型模式-桥接模式 Bridge
将抽象部分和它的实现部分分离;使得他们可以独立的变化;在软件设计的过程中,我们可能面临的问题是一个抽象可以有多个实现。原创 2022-06-05 21:49:11 · 222 阅读 · 0 评论 -
设计模式-结构型模式-适配器模式 Adapter/Wapper
适配器模式提供了一种代码重用的方案,把已经有的代码重新封装到一些新的接口中,这个新的接口是原先接口的没有考虑到的;也被成为包装器(Wapper)处理遗留代码,通过对想在有的类的封装,通过适配器,旧的代码也可以适配新的接口JDK 中的InputStreamReader InputStreamWriter 就是适配器模式 ,把标准的输入输出流适配搭4.写个例子没想好怎么写,场景也没有想到,就把上面的类图实现一下把}原创 2022-06-02 09:11:09 · 178 阅读 · 0 评论 -
设计模式-创建型模式-构建者模式 Builder
设计模式-创建型模式-构建者模式 Builder1.简介构建负载对象,在new 的时候或者每个属性set 会比较多;客户端代码会变得很复杂;当需要实例化一个复杂的类,用来的到不同对象时,我们可以使用不同的类对他们的实例化操作逻辑进行封装,这个类就被称为建造者2.角色Director:指导如何构建对象,这个在有的变体模式中可以省略掉,代码可以合并到客户端中;Product:产品类,复杂对象,建造者创建的对象Builder:抽象建造者类;用于声明构建产品类的组成部分的抽象类或者接口,他的作用是原创 2022-05-29 22:33:59 · 206 阅读 · 0 评论 -
设计模式-行为型模式-访问者模式 Visitor
设计模式-行为型模式-访问者模式 Visitor1.简介访问者模式将操作和操作的对象结构分开,允许有新的操作而不更改结构类;访问者模式在单个类中定义一组操作,他为每个类型的对象定义一个方法,该方法是来自它必须操作的结构。只需要添加一个访问者就可以添加一组新操作2.角色Element:元素,对象结构(后面会说)的基类ConcreteElementA/ConcreteElementB:具体的元素 ,外部操作的具体类Visitor:基类,它声明了对ConcreteElement 的具体操作Co原创 2022-05-29 21:35:39 · 118 阅读 · 0 评论 -
设计模式-行为型模式-迭代器模式 Iterator
设计模式-行为型模式-迭代器模式 Iterator1.简介用于容器和容器遍历;容器可以是数组,列表,集合 或者其他的容器型数据结构迭代器模式提供一种顺序遍历聚合对象元素而不暴露其内部实现方式的方法;2.角色Container/Aggregate : 容器类接口ConcreteContainer/ConcreteAggregate :具体容器类的实现类,暴露方法创建迭代器Iterator:迭代器接口,具有通用方法,hasNext();next()ConcreteIterator:一般容器内原创 2022-05-29 18:25:28 · 173 阅读 · 0 评论 -
设计模式-结构型模式-代理模式 Proxy
设计模式-结构型模式-代理模式 Proxy1.简介为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。功能比如对所有方法添加时间日志记录,对方法添加执行记录;可以对原来的方法不改动,而动态的在方法前后添加一起其他的操作逻辑;2.角色Subject:共同接口,客户端使用的现有接口RealSubject:真实对象,被代理ProxySubject:代理对象,一般是持有被代理对象3.代原创 2022-05-28 22:56:23 · 118 阅读 · 0 评论 -
设计模式-结构型模式-享元模式 flyweight
设计模式-结构型模式-享元模式 flyweight1.简介一般在代码的运行过程中,创建对象是需要花费时间和资源的;所以说很多地方在获取对象的时候是使用缓存或者对象池的形式来返回对象(返回的实例是不可变的),而不是去创建一个示例;在Java中 String 的常量池就是典型的示例,Integer 的常量池 IntegerCache;目的:使用共享对象,减少内存占用; 对缓存的对象的要求是不能被修改;2.角色Client:客户端代码,使用享元对象FlyweightFactory:享元工厂,用于保原创 2022-05-28 09:53:52 · 153 阅读 · 0 评论 -
设计模式-结构型模式-组合模式 Composite
设计模式-结构型模式-组合模式 Composite1.简介组合模式,顾名思义,是吧一组对象组合成一个复杂的单一整体,在内部的数据结构,一般使用树,图,数组或者链表来表示组合对象;JVM 的堆栈是组合模式的最佳示例,把代码逻辑编译成组合模式的这种结构底层的入栈 运算完成后,在运算,当然真是情况比这个复杂的多了,根据操作的类型来不断的推入,执行,弹出,合并;组合模式使用了递归组合的机制,客户端代码一同样的方式对对象的各个部分,或者叶子节点进行处理;2.角色Client :客户端代码;对组合模原创 2022-05-22 20:20:34 · 144 阅读 · 0 评论 -
设计模式-行为型模式-Observer 观察者模式
设计模式-行为型模式-Observer 观察者模式1.简介软件程序之间的解耦,减少相互之间的依赖关系,但是模块之间又是需要协同工作的;观察者模式使得一个对象的状态发生改变的时候,已经预约的其他对象可以看到这一个改变;很多事基于多态来实现;2.角色Subject :主题接口,通知观察者使用这个attach 方法注册, detach 注销 ,notify() 提示变更ConcreteSubject:具体主题,Subject 接口的具体实现,实现观察者在链表的注册和注销,状态改变Observ原创 2022-05-22 17:51:11 · 135 阅读 · 0 评论 -
设计模式-行为型模式-责任链模式 Chain Of Redponsibility
设计模式-行为型模式-装饰者模式 Chain Of Redponsibility1.简介计算机软件是用来处理信息的,有多种维度或者方向去处理信息; 我们设计编程中的对象时,应该赋予一个类单一的职责;这样可以类更加扩展和维护;基于这个场景,我们设计一系列的处理信息的类按照不同规则去处理类,而不是把所有的规则添加到一个类里面来,这样使得规则更容易扩展和维护;这些类被称之为处理器,处理器处理请求,处理后给下一个处理,以此类推到最后一个;如下图所示2.角色角色Client:客户端,会实例化一个原创 2022-05-20 09:53:15 · 138 阅读 · 0 评论 -
设计模式-结构型模式-装饰者模式
设计模式-结构型模式-装饰者模式1.简介有时候我们需要在现有的代码中,添加或者删除一些功能,同时对现有的功能又不影响,而且修改的这些功能又不足以做成一个(被装饰者)子类聚合了将要装饰的接口,实现了原有对象一样的接口,代理委托原有对象的所有方法(变成了调用装饰类的方法)。在装饰类的子类方法中实现增强;被装饰者的接口必须和装饰器的接口完全一致;相当于是动态的扩展对象功能而不修改原有的对象,适配原接口,而不是使用子类化来扩展;2.角色具有一下角色Component :抽象组件 可以是一个接口原创 2022-05-18 22:00:18 · 188 阅读 · 0 评论 -
设计模式-行为型模式-调停者-中介者 Mediator&门面Facade模式
调停者/中介者 Mediator 模式&门面Facade模式1.简介1.1 架构演变一个程序中各个模块之间相互通信的时候,最直接的方式是直接调用或者是发送消息;当数量过多的时候,可能会照成混乱;这个时候的问题就是蓝色系统对红色系统的调用需要一个中间者统一管理就好了,不需要一个个去访问在处理这个中间者就是门面;那这个时候红色部分也是如此,如果都是使用门面的方式通信,是不是就是下面的架构所有程序模块模块都去和门面里面去处理,门面的作用也相当于是调停了各个程序模块之间的相互调用;1.原创 2022-05-18 10:27:57 · 152 阅读 · 0 评论 -
设计模式-创建型模式-工厂模式
工厂模式工厂模式的和兴就是负者合适对象的创建;是一种非常常见的创建性设计模式,隐藏创建对象的创建逻辑,通过使用共同的接口来创建对象;添加新类时只需要做少量的修改;1.简单工厂模式调用方法直接获取对象 (前面说的单例模式也是一种方式);简单工厂具体的实现方式一般是 ,静态工厂模式,反射类注册,newInstance 方式1.1 静态工厂模式只负责对象实例化,符合单一职责; 只需要调用创建接口就可以;public class SimpleFactory1 { public static Ve原创 2022-05-16 23:48:35 · 234 阅读 · 0 评论 -
设计模式-创建型模式-策略模式-1
策略模式策略模式定义了一系列算法,封装了这些算法,并使它们可以互换;策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化注:基于面向对象的特性:多态;1.实现类图context : 运行特定策略的类;ConcreteStrategy1 ,ConcreteStrategy2,ConcreteStrategy3 具体的策略实现Strategy: 抽象的策略;2.简单实现原创 2022-05-15 22:30:45 · 182 阅读 · 0 评论 -
SpringMVC 框架的理解与分析(1)
SpringMVC 框架的理解与分析1.介绍Spring框架是IOC容器思想的一个具体实现 ,而SpringMVC则是在SpringIOC 的容器基础上来进一步扩展的用于Web 环境的框架。Spring IOC 是Spring框架内部的一个模块,而如果IOC 容器用于Web 环境的话,则容器启动初始化 需要伴随着Web容器(Tomcat/Weblogic/jboss)的启动而启动的,进而把IOC容器加载到Web环境中去;下面是以tomcat 作为web 容器的例子进行分析 ,在tomcat中web原创 2021-01-04 23:14:22 · 277 阅读 · 0 评论 -
设计模式-创建型模式-单例模式-1
创建型模式-11.单例模式1.1 介绍单例模式 singleton pattern :用来保证一个对象只会创建一个实例是最常用的设计模式,它具有易于理解,使用简便.但有时候在过度的使用会有适得其反的效果; 就比如单例懒加载一个大对象,在使用的时候在加载就会有明显的延迟;1.2 单例模式V1下面是最简单的单例模式public class SingletonV1 { public static SingletonV1 singleton; private SingletonV1(原创 2020-08-25 23:01:01 · 177 阅读 · 0 评论