![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 55
给你一朵小红花。
这个作者很懒,什么都没留下…
展开
-
设计模式之责任链模式
责任链模式责任链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象能够处理它。优点:1、降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息2、增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则3、增强了给对象指派职责的灵活性。当工作流程发生变化,可以动态地改变链内的成员或者调原创 2021-03-30 15:11:16 · 1324 阅读 · 0 评论 -
设计模式之模版方法模式
模版方法模式在模板方法模式(Template Method)中,定义一个操作中的算法框架,将内容交给子类处理。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定逻辑。例子:人拥有的时间是一样的,但是怎么安排是不一样的。使用场景:1、有多个子类共有的方法,且逻辑相同。2、重要的、复杂的方法,可以考虑作为模板方法。优点:1、把不可改变的封装起来,把能够改变的扩展开来2、他把很多类的共同操作给封装了起来,利于维护缺点:1、每一个不同的实现都要交给不同的子类,导致个数增加,比较重量级。原创 2021-03-30 09:31:45 · 1386 阅读 · 1 评论 -
设计模式之代理模式
代理模式代理模式(Proxy Pattern)为其他类提供代理控制对象访问,属于结构型模式,满足开闭原则。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。例子:1、买火车票不一定去火车站买也可以去代售点买2、卖房子可以委托中介帮卖3、电脑桌面创建快捷方式代理模式分为静态代理,动态代理。静态代理:程序员自己写的代理类动态代理:分为Jdk和CJLB动态代理方式1.静态代理使用代理方式在执行order前后增加日志纪录操作package com.mode.proxy;p原创 2021-03-27 11:33:30 · 1454 阅读 · 0 评论 -
设计模式之外观模式
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。如果多个功能的计算或逻辑很复杂,并且相对独立,就可以通过外观模式来封装这些功能,简化底层操作方法,减少系统相互依赖,增加代码灵活性。外观模式有一个致命的很大的缺点就是不符合开闭原则,如果要改东西很麻。例子:去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。1、假如一个方法里面有限流逻辑代码、权限逻辑代码、日志记录代码原创 2021-03-26 10:58:04 · 1306 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。举个生活中的例子,我们生活用电是220v,而我们的手机、ipad这些电子产品充电肯定是不可能用这么大电压充电,所以手机充电线就有适配器传输转换合适的电压进行充电。角色Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中原创 2021-03-25 17:41:36 · 1287 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式装饰模式(Decorator Pattern)是一种比较常见的模式,动态地给一个对象添加一些额外的职责。不改变原有对象动态扩展,可替代继承但是多层装饰会导致复杂化。假设我们现在有个奶茶店,我们制作奶茶,假如客户需要加红豆、椰果则需要加钱。我们可以理解为是将奶茶进行扩展。例如Mybatis中切换二三级缓存的时候就用的装饰模式,像spring配置多数据源有不同的数据库连接也可以使用装饰模式。1、创建奶茶接口,里面有奶茶制作与对应金额方法package com.mode.decorator;原创 2021-03-25 15:35:15 · 1325 阅读 · 0 评论 -
设计模式之策略模式
策略模式:策略模式遵循开闭原则,实现对代码的解耦合。它是对算法的包装,可以自由选择算法。如果算法很多的话会有很多的策略类。在项目开发中会出现很多的if-else判断,而策略模式可以解决部分if判断。if-else案例package com.mode.strategy;public class Test01 { public static void main(String[] args) { String type = "red"; if("red".e原创 2021-03-23 11:18:27 · 1389 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式1、工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。2、在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。2、工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式,它们都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,目的是降低系统中代码耦合度,并且增强了系统的扩展性。优点:1、一个调用者想创建一个对象,只要原创 2021-03-23 15:32:01 · 1596 阅读 · 1 评论 -
设计模式之单例模式
单例模式单例模式(Singleton Pattern)是 Java 中较为简单且源码中常出现的设计模式,属于创建型模式。实现一个类只有一个实例化对象用来提供全局对象场景例如SpringIoc的单例。单例的五种写法有懒汉式、饿汉式、双重检验锁、枚举、静态内部类。假如不想一个类频繁创建销毁可以使用到单例。1、懒汉式首先这个写法在单线程时候式安全的,多线程的时候就不安全了。package com.mode.singleton;public class Singleton { priva原创 2021-03-25 09:50:57 · 1400 阅读 · 1 评论