![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 72
Java设计模式
老蛙@
卷
展开
-
职责链模式
职责链模式,又称责任链模式;为请求创建了一个接收者对象的链。这种模式对请求的发送者和接收者进行解耦职责链模式通常每个接收者都包含对另一个接收者的引用,如果档期那接收者不能处理,就将请求交给下一个接收者处理职责链模式属于行为型模式将请求和处理分开,实现解耦,提高系统的灵活性简化了对象,对象不需要知道链的结构。...原创 2022-09-01 10:52:36 · 132 阅读 · 0 评论 -
策略模式
策略模式定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的用户第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类;第三、多用聚合少用继承策略模式的关键是项目中的变化部分和不变的部分策略模式的核心思想是:多用组合/聚合,少用继承;用行为类组合,而不是行为的继承。更有弹性体现了开闭原则,客户端增加行为不修改原有代码,只需要添加一种策略或行为即可,避免了多重的if-else提供了可以替换继承关系的方法,用策略将行为单独提取出来,使用聚合代替继承。...原创 2022-08-31 11:39:36 · 99 阅读 · 0 评论 -
状态模式
状态模式主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题,状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了类状态模式的代码具有很强的可读性,状态模式将每个状态的行为封装到对应的一个类中方便维护,将容易长生问题的if-else语句删除了,如果把每个状态的行为都放到一个类中,每次调用方法都要判断当前是什么状态,不但会产出很多的if-else语句,而且容易出错符合开闭原则,容易增删状态。...原创 2022-08-30 13:14:59 · 145 阅读 · 0 评论 -
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态备忘录模式属于行为型模式备忘录模式提供了一种状态恢复机制,可以使用户能够比较方便的回到某个历史状态实现了信息的封装,使得用户不需要关心状态的保存细节如果类的成员变量较多,势必会占用比较大的资源,而且保存一次都会消耗一定的内存适合的场景:游戏存档、windows中ctrl+z、浏览器的回退、数据库的事务管理为了节省内存,可以和原型模式配合使用。...原创 2022-08-29 16:40:56 · 788 阅读 · 0 评论 -
中介者模式
中介者模式,用一个中介对象来封装一系列的对象交互,中介者使各个对象之间不需要显式的相互引用,从而使其松耦合,可以独立地改变他们之间的交互中介者模式属于行为型模式,使代码松耦合,提高扩展性和维护性比如MVC模式,C就是M和V的中介者,C负责所有调用的控制,在前后端之间起到了中间人的作用多个类相互耦合,会形成网状结构,使用中介者模式将网状结构分离为星型结构,松耦合减少类间依赖,降低了耦合,符合迪米特法则中介者承担了较多的责任,一旦中介者出现了问题,整个系统都会受影响。...原创 2022-08-26 15:40:16 · 129 阅读 · 0 评论 -
观察者模式
新增一个第三方,都需要创建一个新的第三方对象,并加入都dataChange中,不利于维护,也不是动态加入。jdk中Observeable类,使用了观察者模式。原创 2022-08-25 14:34:41 · 256 阅读 · 0 评论 -
迭代器模式
优点提供了一个统一的方法遍历对象那个,客户不用再考虑集合类型隐藏了集合的内部结构,客户端要遍历集合是只需要取到迭代器,不用知道内部组成提供了一种设计思想,一个类应该只有一个引起变化的原因,再集合类中吧迭代器分开,就是把管理对象集合和遍历对象集合的责任分开缺点每个聚合对象都要一个迭代器,会产生多个迭代器类。原创 2022-08-19 17:45:19 · 143 阅读 · 0 评论 -
访问者模式
访问者模式封装了一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作主要将数据结构和数据操作分离,解决数据结构和操作耦合性问题访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口访问者模式的主要应用场景是:需要对一个对象结构中的对象进行很多不同的操作,同时避免这些操作污染这些对象的类,将类结构和操作分离访问者模式符合单一职责原则,让程序具有优秀的扩展性,灵活性非常高访问者模式可以对功能尽心过统一,可以作报表、UI、拦截器、过滤器,...原创 2022-08-17 17:13:06 · 130 阅读 · 0 评论 -
命令模式
在软件设计中,经常需要向某些对象发送请求,但并不知道请求的具体接收者是谁,也不知道被请求的操作是哪个,只需要在程序运行时指定具体的接收者即可命令模式使得请求发送者和请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦在命令模式中,会将请求为一个对象,以便使用不同参数来标识不同的请求,同时命令支持可撤销的操作。...原创 2022-08-16 14:27:49 · 98 阅读 · 0 评论 -
模板方法模式
在抽象类中公开定义了执行它的方法的模板,子类可以按需要重写方法实习那,但调用将以抽象类中定义的方式进行简单的说,模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构,就可以重定义该算法某些特定步骤模板方法模式属于行为型模式。...原创 2022-08-14 17:19:10 · 176 阅读 · 0 评论 -
代理模式
防火墙代理:内网通过代理穿透防火墙,实现对公网的访问缓存代理:比如当请求图片文件等资源,先缓存代理取,如果取到资源则ok,取不到再由代理到公网或者数据库取然后缓存远程代理:远程对象的本地代表,通过它可以把远程对象当作本地对象来调用,远程代理通过网络和真正的远程对象沟通信息同步代理:主要在多线程编程中,完成多线程之间的同步工作。...原创 2022-08-13 15:05:14 · 126 阅读 · 0 评论 -
享元模式
享元模式也叫蝇量模式,是运用共享技术有效的支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题,像数据库连接池,里面都是创建好的连接对象,caller需要使用的时候直接拿来用,避免重新创建,在没有我们需要的对象的时候,就重新创建一个享元模式能够解决重复对象的内存浪费问题,当系统中有大量相似的对象,需要缓冲池时。不需要总是创建新对象,可以从缓冲池里面拿,这样可以降低系统内存,同时提高效率享元模式的经典应用场景就是池技术。...原创 2022-08-12 15:25:11 · 92 阅读 · 0 评论 -
外观模式
外观模式也叫过程模式,外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而不用关心这个子系统的内部细节外观模式对外屏蔽了系统的细节,因此外观模式降低了客户端对子系统使用的复杂性外观模式降低了客户端与子系统的耦合关系,让子系统内部的模块更易维护和扩展通过合理的使用外观模式,可以更好的划分访问层次。...原创 2022-08-11 20:18:42 · 91 阅读 · 0 评论 -
组合模式
组合模式,又叫部分整体模式,他创建了对象组的树形结构,将对象那个组合成树状结构以表示整体-部分的层次关系组合模式依据树形结构来组合对象,用来表示部分以及整体层次组合模式数据结构型模式组合模式使得用户对单个对象和组合对象的访问具有一致性,即组合能让客户以一直的方式处理个别对象以及组合对象简化了caller的操作,caller只需要面对一致的对象而不用考虑整体部分或者结点叶子的问题具有较强的扩展性,当需要更改组合对象时,只需要调整内部的层次关系,caller不用做出任何改动,符合开闭原则。...原创 2022-08-10 16:20:10 · 109 阅读 · 0 评论 -
装饰者模式
装饰者模式能够动态的将新的功能附加到对象上,在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则装饰者模式装饰者模式就像打包一个快递,其中包含主体(即打包的物品);以及包装(快递包装外壳);一个主体可以由多个包装嵌套装饰。...原创 2022-08-07 19:42:32 · 81 阅读 · 0 评论 -
桥接模式
桥接模式是指,将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变桥接模式是一种结构性模式桥接模式基于类的最小设计原则,通过使用封装、聚合以及继承等行为让不同的类承担不同的职责,它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展桥接模式实现了抽象和实现的分离,从而极大的提高了系统的灵活性,让抽象部分和实习那部分独立开,有助于系统进行分层设计,产生更好的结构化系统。...原创 2022-08-06 16:23:39 · 116 阅读 · 0 评论 -
适配器模式
适配器模式分为三类,是根据src是以怎样的形式给到Adapter来命名的类适配器:以类给到,在Adapter将src当作类,继承;对象适配器:以对象给到,在Adapter将src作为一个对象,持有;接口适配器:以接口给到,在Adapter,将src作为一个接口,实现Adapter模式最大的作用还是将原本不兼容的接口融合在一起工作。...原创 2022-08-04 19:58:38 · 92 阅读 · 0 评论 -
建造者模式
建造者模式又叫生成器模式,是一种对象构建模式。他可以将复杂对象的构建过程抽象出来,是这个抽象过程的不同实现方式可以构造出不同表现的对象建造者模式是一步步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以和构建他们,不用关注内部的构建细节客户端不必知道产品内部组成的细节,将产品本身和产品的创建过程解耦,是的相同的创建过程可以创建不同的产品对象。...原创 2022-08-03 20:28:46 · 101 阅读 · 0 评论 -
原型模式
原型模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型模式,允许一个对象再创建一个可定制的对象,无需知道创建的细节工作原理通过一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建。...原创 2022-07-31 14:49:09 · 159 阅读 · 0 评论 -
工厂模式
简单工厂模式属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建哪一种产品类的实例简单工厂模式定义了一个创建对象的类,有这个类来封装实例化对象的行为在软件开发中,如果会用到大量的创建某种、某类或者某批对象时,就会用到工厂模式基于简单工厂模式,可以发现是根据参数的不同来生成不同的对象实例,在扩展的时候需要修改工厂的代码,工厂方法模式旨在将不同实体的实例由不同的工厂来创建,在扩展的时候,只需要新增新的工厂和实体类,不需要修改代码https。...原创 2022-07-28 15:28:40 · 102 阅读 · 0 评论 -
单例模式
所谓单例模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法;例如Hibernate的SessionFactory,它充当数据源的代理,并负责创建Session对象,SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory对象单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些要频繁拆功能键销毁的对象,使用单例模式可以提高系统性能https。...原创 2022-07-25 16:07:26 · 95 阅读 · 1 评论 -
设计模式七大原则
降低代码的复杂度,一个类只负责一项职责提高类的可读性,可维护性降低变更引起的风险通常情况下,应当严格遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则,如果类中方法数量足够少,可以在方法级别保持单一职责原则,而非类级别客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上;比如某个类没有用到某个接口中的方法,应该依赖作用范围最小的不包含该方法的接口高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象制定规范,;。...原创 2022-07-22 20:52:47 · 145 阅读 · 0 评论 -
UML模型和类的六大关系
组合关系也是整体和部分的关系,但是整体和部分不可以分开,因为整体是由部分组成的,不可或缺,(类中某个属性,有非空默认值,或者该值在构造器中赋值,表示组合关系)表示0个或多个,“0,1”表示0个或者一个,“n,m”表示n到m个都可以,m…,所以它具有方向性和多重性(类中某个属性,可以为null,也可以通过set方法来设置值,则表示聚合),那么他们之间就存在依赖关系,如果不存在用到的类,无法通过编译。实现关系实际上就是A实现了B中抽象的方法,它是。聚合关系表示的是整体和部分的关系,泛化关系实际上就是继承关系,.原创 2022-07-19 20:23:25 · 141 阅读 · 0 评论