![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件设计模式
涵盖开发及面试所有设计模式,赋真实实战设计代码
BOUBOU1
这个作者很懒,什么都没留下…
展开
-
适配器模式(Adapter Pattern)
介绍将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,属于结构型设计模式。使用场景已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不 同厂家造成功能类似而接口不相同情况下的解决方案,有点亡羊补牢的感觉。优点能提高类的透明性和复...原创 2020-02-22 19:44:53 · 203 阅读 · 0 评论 -
原型模式(Prototype Pattern)
介绍原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此...原创 2020-02-22 16:13:44 · 178 阅读 · 0 评论 -
建造者模式(Builder Pattern)
介绍将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。对比现实世界,类似于: 要造一台计算机主机,需要CPU、内存卡、显卡、电源等。组装过程也相对复杂,比如一些接线的处理。 要造一辆汽车,需要底盘、方向盘、发动机、座椅、轮子等等。 要造航空母舰,需要甲板、起飞装置、机库、动力系统、武器库等。...原创 2020-02-22 14:37:08 · 254 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
介绍在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。何时使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:...原创 2020-02-20 15:44:50 · 142 阅读 · 0 评论 -
工厂模式(Factory Pattern)
介绍意图:提供了一种创建对象的最佳方式,定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决问题:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。应用实例:1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。优点:1、一个调用...原创 2020-02-20 12:15:12 · 156 阅读 · 0 评论 -
模板模式(Template Pattern)
使用场景:模板模式通常又叫模板方法模式(Template Method Pattern)是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现、适用于流程标准化的业务场景。1、有多个子类共有的方法,且逻辑相同。 2、重要的、复杂的方法,可以考虑作为模板方法源码实例:JDK:AbstractList、MyBatis:BaseExecutor等优点:1、封装不变部分,扩...原创 2020-02-19 21:48:50 · 239 阅读 · 0 评论 -
单例模式(Singleton Pattern)
单例模式(Singleton Pattern)使用场景:独一无二确保一个类在任何情况下都绝对只有一个实例,并只提供一个全局访问点。优缺点 优:保证内存中只有一个实例,减少了内存开销,避免对资源的过多占用。类图: 略源码实例: ServletContext、ServletContextConfig、在 Spring 框架...原创 2020-02-16 21:17:16 · 164 阅读 · 0 评论 -
软件设计模式教程
教程简介教程将涵盖软件开发中涉及的23种设计模式,并且实时更新最新企业生产案例,侧重于实际应用案例讲解,期间会穿插部分设计模式在JDK、Mybatis、以及Spring源码中的使用,当然更多的还是介绍在企业实际项目中的经典使用。目录...原创 2020-02-16 18:16:19 · 421 阅读 · 0 评论 -
架构设计原则
软件开发--具体技术的学习?为什么学这项技术?----不同的目的对于即将学习的深度要求不一样、对于学习完之后产出的东西也不一样。1.学完这个是自己要写一个一样的框架出来???具体要求: 精通技术的实现细节 能够在其基础之上进行重构 实现出一个性能更优、功能更强大、更易于维护便于定位问题的商用框架 框架如何对外推广学习中主要考虑的几个点: 框架架构...原创 2020-01-17 17:07:19 · 196 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
介绍备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。优点1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。2、实现了信息的封装,使得用户不需要关心状态的保存细节。缺点消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。使用场景...原创 2020-02-23 19:49:20 · 183 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
介绍中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。优点1、降低了类的复杂度,将一对多转化成了一对一。2、各个类之间的解耦。3、符合迪米特原则。缺点中介者会庞大,变得复杂难以维护。使用场景1、系统中对象之间存在比较...原创 2020-02-23 19:11:12 · 125 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
介绍迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。优点1、它支持以不同的方式遍历一个聚合对象。2、迭代器简化了聚合类。3、在同一个聚合上可以有多个遍历。4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点由于迭代器模式将...原创 2020-02-23 17:20:25 · 154 阅读 · 0 评论 -
命令模式(Command Pattern)
介绍命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。优点1、降低了系统耦合度。2、新的命令可以很容易添加到系统中去。缺点使用命令模式可能会导致某些系统有过多的具体命令类。使用场景认为是命令的地方都可以使...原创 2020-02-23 16:47:52 · 254 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
介绍责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。优点1、降低耦合度。它将请求的发送者和接收者解耦。...原创 2020-02-23 15:41:37 · 148 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)
介绍解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。优点1、可扩展性比较好,灵活。2、增加了新的解释表达式的方式。3、易于实现简单文法。缺点1、可利用场景比较少。2、对于复杂的文法比较难维护。3、解释...原创 2020-02-23 14:55:00 · 176 阅读 · 0 评论 -
代理模式(Proxy Pattern)
介绍代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问。 代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。在生活中,我们经常见到这样的场景,如:租房中介、售票黄牛、婚介、经纪人、快递、 事务代理、非侵入式日志监听等,这些都是代理模式的实际体现。目的1、保护目标对象2、增强目标对象。分类1、静态代理2、动态...原创 2020-02-23 12:39:21 · 1154 阅读 · 0 评论 -
装饰器模式(Decorator Pattern)
介绍装饰者模式(Decorator Pattern)是指在不改变原有对象的基础之上,将功能附加到对 象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。装饰者模式在我们生活中应用也比较多如给煎饼加鸡蛋;给蛋糕加上一些水果;给房子 装修等,为对象扩展一些额外的职责。优点1、装饰者是继承的有力补充,比继承灵活,不改变原有对象的情况下动态地给一个对象 扩展功能,即...原创 2020-02-23 11:59:31 · 187 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
介绍享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来...原创 2020-02-23 11:32:23 · 212 阅读 · 0 评论 -
外观模式(Facade Pattern)
介绍隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。优点1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。缺点不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。使用场景...原创 2020-02-23 10:50:01 · 157 阅读 · 0 评论 -
组合模式(Composite Pattern)
介绍将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。优点1、高层模块调用简单。2、节点自由增加。缺点在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。何时使用1、想表示对象的部分-整体层次结构(树形结构),如树形菜单,文件、文件夹的管理。2、您希望用户忽略组合对象与单个对象...原创 2020-02-22 22:29:02 · 130 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
介绍将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接,将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。优点1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。缺点桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。使用场景1、如果一个系统需要在构...原创 2020-02-22 22:02:31 · 251 阅读 · 0 评论 -
策略模式(Strategy Pattern)
介绍策略模式(Strategy Pattern)是指定义了算法家族、分别封装起来,让它们之间可以互 相替换,此模式让算法的变化不会影响到使用算法的用户。优点1、策略模式符合开闭原则。2、避免使用多重条件转移语句,如 if...else...语句、switch 语句3、使用策略模式可以提高算法的保密性和安全性。缺点1、客户端必须知道所有的策略,并且自行决定使用哪一个策略类...原创 2020-02-24 16:37:47 · 608 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
介绍访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。优点1、符合单一职责原则。2、优秀的扩展性。3、灵活性。缺点1、具体元素对访问者公布细节,违反了迪米特原...原创 2020-02-24 16:38:00 · 245 阅读 · 0 评论 -
状态模式(State Pattern)
介绍在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。优点1、封装了转换规则。2、枚举可能的状态,在枚举状态之前需要确定状态种类。3、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态...原创 2020-02-24 16:38:25 · 242 阅读 · 0 评论 -
观察者模式(Observer Pattern)
介绍观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同 时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通 知并更新,属于行为型模式。优点1、观察者和被观察者之间建立了一个抽象的耦合。2、观察者模式支持广播通信。缺点1、观察者之间有过多的细节依赖、提高时间消耗及程序的复杂度。2、使用要得当,要避免循环调...原创 2020-02-24 16:38:39 · 150 阅读 · 0 评论