![](https://img-blog.csdnimg.cn/direct/4ac77c17579a4159a7019ec94b8c465d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 73
23种设计模式学习笔记,Java语言编写代码!
Starry-Leo
大多都是学习笔记,方便自己随时复习,所以博客有时候没有写得很详细,望海涵~~~
联系邮箱:xxliao100@163.com
展开
-
设计模式基础知识点(七大原则、UML类图)
设计模式原则,就是在编程时,应当遵守的原则,是设计模式的基础,也是设计模式为什么这么设计的依据。设计模式通常有7大原则:单一职责原则、接口隔离原则、依赖倒转原则、里氏替换原则、开闭原则、迪米特法则、合成复用原则。原创 2024-06-02 02:07:31 · 628 阅读 · 0 评论 -
设计模式(一)创建型模式---单例模式(singleton)
单例模式(singleton pattern)属于创建型设计模式,就是采取一定的方法保证整个软件系统中,对于某个类只存在一个实例对象。一般来说单例模式有8种实现方式:1-2:饿汉式(静态常量、静态代码快);3-5:懒汉式(线程不安全,线程安全同步方法,线程安全同步代码块);6:双重检查;7: 静态内部类;8:枚举类;原创 2024-06-02 02:07:18 · 284 阅读 · 1 评论 -
设计模式(二)创建型模式---工厂模式(factory)
工厂模式(factory pattern)是一种创建型模式,主要有三种:简单工厂(Simple Factory)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)。整个博客例子:设计一个咖啡点餐系统:设计一个咖啡类(Coffee),并定义两个子类,美式咖啡(AmericanCoffee)和拿铁咖啡(LatteCoffee),在设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。原创 2024-06-02 02:07:06 · 846 阅读 · 0 评论 -
设计模式(三)创建型模式---建造者模式(builder)
建造者模式(builder pattern)将对象的创建和表示分离,分离了对象的构建(Builder)和装配(Director),实现了构建和装配的解耦。不同的构建,相同的装配,可以创建不同的对象,相同的构建器,不同的装配顺序也可以做出不同的对象。原创 2024-06-02 02:06:45 · 339 阅读 · 0 评论 -
设计模式(四)创建型模式---原型模式(prototype)
原型模式(prototype pattern)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。工作原理:原型模式创建新的对象,其本质就是克隆,也就是 对象.clone()。原创 2024-06-02 02:06:30 · 268 阅读 · 0 评论 -
设计模式(五)结构型模式---适配器模式(adapter)
适配器模式(adapter pattern)是将一个类的接口转换成客户希望的另外一个接口,使得原来由于接口不兼容而不能一起工作的,而能一起工作。原创 2024-06-02 12:47:31 · 266 阅读 · 0 评论 -
设计模式(六)结构型模式---桥接模式(bridge)
桥接模式(bridge pattern)是一种将抽象与实现分离,使它们独立变化。然后利用组合关系来代替继承关系,大大的降低了抽象和实现的耦合度的设计模式。实际使用: JDBC源码分析,定义了Driver接口,然后各个数据库厂商去实现Driver接口,原创 2024-06-02 13:24:32 · 379 阅读 · 0 评论 -
设计模式(七)结构型模式---组合模式(composite)
组合模式(Composite Pattern)又叫整体模式,它创建了对象组的树形结构,将对象组合成树状结构来表示“整体-部分”的层次关系。实际使用点:HashMap中构造函数,有可以添加整个集合的构造,就是组合模式。原创 2024-06-02 13:36:17 · 239 阅读 · 0 评论 -
设计模式(八)结构型模式---装饰者模式(decorator)
装饰者模式(Decorator Pattern)是动态的将新对象依附到对象上。相当于对象可以包裹对象本身,然后可以根据递归方式获取想要的信息。实际使用: JDK中的IO流。原创 2024-06-02 13:48:30 · 302 阅读 · 0 评论 -
设计模式(九)结构型模式---外观模式(facade)
外观模式 (Facade Pattern)也叫门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。MyBatis的Configuration配置类,原创 2024-06-02 14:11:40 · 275 阅读 · 0 评论 -
设计模式(十)结构型模式---享元模式(flyweight)
享元模式(fly weight pattern)主要是通过共享对象来减少系统中对象的数量,其本质就是缓存共享对象,降低内存消耗。内部状态和外部状态,内部状态是不会变化的,可以被多个对象共享,而外部状态会随着对象的使用而改变。实际中的使用:jdk-Interger(-128 127),存在于缓存池。原创 2024-06-02 15:20:40 · 354 阅读 · 1 评论 -
设计模式(十一)结构型模式---代理模式(proxy)
代理模式(proxy pattern)就是为一个对象提供一个替身,以控制对这个对象的访问,更可以达到对该对象功能的增强。在AOP编程中如何选择代理模式:目标对象实现了接口采用JDK代理,目标对象未实现接口采用cglib代理。静态代理在使用时,需要定义接口或者父类,被代理对象(目标对象)与代理对象要实现相同的接口或者继承相同的父类。JDK代理是Java语言自带的代理,使用时候,要求被代理的对象需要有父类接口。实现原理就是:在内存中创建一个新的class对象。cglib代理也叫子类代理,原创 2024-06-02 15:51:37 · 597 阅读 · 0 评论 -
设计模式(十二)行为型模式---模板方法模式(template)
模板方法模式(Template Method)是一种**基于继承实现的设计模式**,主要思想是:将定义的算法抽象成一组步骤,在抽象类中定义算法的骨架,把具体实现留给子类来实现。- 实际使用: JDBCTemplate,HttpServlet,Servlet过滤器。原创 2024-06-02 16:43:17 · 322 阅读 · 0 评论 -
设计模式(十三)行为型模式---命令模式(command)
命令模式(command pattern)也叫动作模式或者事务模式。它是将请求(命令)封装成对象,使得可以用不同的请求对客户端进行参数化,具体的请求可以在运行时更改、排队和记录,它将发出者和 接收者解耦,顺序是: 发出者 --> 命令 --> 接收者。实际使用:Spring JdbcTemplate 中的execute/query方法、Runnable Thread start()。原创 2024-06-02 18:01:00 · 451 阅读 · 0 评论 -
设计模式(十四)行为型模式---访问者模式(visitor)
访问者模式(visitor pattern)是封装一些作用于某种数据结构中的元素的操作,它可以在不改变这个数据结构(实现例子中的、男女)的前提下,定义作用于这些原则新的操作(实现例子中的成功、失败、待定等结果)。双分派:就是经历两次上面的分派过程就是双分派。原创 2024-06-02 18:23:30 · 431 阅读 · 0 评论 -
设计模式(十五)行为型模式---迭代器模式(iterator)
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部。原创 2024-06-03 00:00:05 · 355 阅读 · 0 评论 -
设计模式(十六)行为型模式---观察者模式(observer)
观察者模式(observer pattern又称为发布-订阅(Publish-Subscribe)模式,定义了一对多的依赖关系,让多个观察者对象同事监听某一个主题对象。当这个主题对象在状态变化时,会通知所有的观察者对象。优点: 降低了目标和观察者之间的耦合关系,被观察者发送通知,所有观察者对象都能收到消息。原创 2024-06-03 00:00:19 · 408 阅读 · 0 评论 -
设计模式(十七)行为型模式---中介者模式(mediator)
中介者模式(mediator pattern)又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象的耦合松散,且可以独立地改变它们之间地交互。优点:1.中介者模式 将 多个同事对象之间的交互封装到中介者中,松了同事对象之间的耦合。2.交互集中到了中介者集中管理。原创 2024-06-03 00:00:32 · 331 阅读 · 0 评论 -
设计模式(十八)行为型模式---备忘录模式(memento)
备忘录模式(memento pattern)又叫快照模式,在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象回复到原先保存的对象。原创 2024-06-03 00:00:52 · 372 阅读 · 0 评论 -
设计模式(十九)行为型模式---解释器模式(interpreter)
解释器模式(interpreter pattern)是给定一个语言表达式,定义它的文法表示,并定义一个解释器,解释器使用该标识来解释语言中的句子。例如:a+b+c=d,这种就是一种”语言“的句子。抽象语法树(AbstractSyntaxTree):是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。例如:1+2+3+4-5的语法树。原创 2024-06-03 00:01:07 · 858 阅读 · 0 评论 -
设计模式(二十)行为型模式---状态模式(state)
状态模式(state pattern)主要用于解决对象在多种状态转换时候,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。原创 2024-06-03 00:01:22 · 512 阅读 · 0 评论 -
设计模式(二十一)行为型模式---策略模式(strategy)
策略模式(strategy pattern)是定义一些算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化,不会影响使用算法的客户。原创 2024-06-03 00:01:34 · 263 阅读 · 0 评论 -
设计模式(二十二)行为型模式---责任链模式(chain responsibility)
责任链模式(chain responsibility)是为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者,通过前一对象记住其下一个对象的引用,而连成一条链,当有请求发生时候,可将请求沿着这一条链传递,直到有对象处理它为止。原创 2024-06-03 00:01:49 · 885 阅读 · 1 评论