
设计模式
文章平均质量分 92
程序猿进阶
要做就做第一,就算结果不是第一,也会是一个好成绩。 加油!我的未来不是梦。
展开
-
设计模式——桥接模式
将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。【2】是一种结构型设计模式。【3】Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstract)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。由于抽象与实现分离,所以扩展能力强,其实现细节对客户透明。由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程。增加了系统的理解和设计难度。原创 2024-02-08 11:30:00 · 1361 阅读 · 18 评论 -
设计模式——适配器模式
● 适配器模式是将某个类的接口转化成客户端需要的另一个接口表示,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)● 适配器模式属于结构型模式● 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式①、可以让任何两个没有关联的类一起运行。②、提高了类的复用。③、增加了类的透明度。④、灵活性好。①、过多地使用适配器,会让系统非常凌乱,不易整体进行把握。原创 2024-02-07 11:30:00 · 1703 阅读 · 65 评论 -
设计模式——建造者模式
又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。2)、构造者模式,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。3)、构造者模式主要解决在软件系统中,当面临一个复杂对象的创建工作时,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临剧烈的变化,但是将它们组合在一起的算法却相对稳定。原创 2024-02-06 11:30:00 · 1550 阅读 · 70 评论 -
设计模式——原型模式
● 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。● 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。● 工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对像拷贝它们自己来实现创建,及对象的clone()。原创 2024-02-05 10:30:00 · 1420 阅读 · 40 评论 -
设计模式——七大原则
客户端不应该依赖它不需要的接口类,类之间的依赖关系应该建立在最小的接口上。一句话,就是实现接口的类中,有多余的方法时,需要将接口进行拆分。原创 2024-02-04 11:30:00 · 4498 阅读 · 33 评论 -
设计模式——备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。【2】现实生活中备忘录是用来记录某些要去做的事情,或者是记录已经达成共同意见的事情,以防忘记。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。【3】备忘录模式属于行为型模式。【4】实现了信息的封装,使得用户不需要关心状态和保存细节。符合 “单一职责原则”。原创 2024-02-03 11:30:00 · 1369 阅读 · 60 评论 -
设计模式——策略模式
【1】策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的用户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同对象进行管理。【2】这算法体现了几个设计原则,第一:把变化的代码从不变的代码中分离出来;第二:针对接口编程而不是具体的类(定义了策略接口);第三:多个组合/聚合,少用继承(客户通过组合方式使用策略)原创 2024-02-02 11:30:00 · 1905 阅读 · 29 评论 -
设计模式——单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建(私有的构造器),这个类对外提供了唯一一种访问其实例的方式,对外只能够直接访问,不能实例化此类对象。例如,一台计算机上可以连接多台打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中只有一个打印程序的实例。原创 2024-01-31 11:30:00 · 1249 阅读 · 52 评论 -
设计模式——工厂模式
更多内容,前往(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单使用的模式。简单工厂模式定义了一个创建对象的类,由这个类来封装实例化对象的行为。原创 2024-01-30 11:30:00 · 1432 阅读 · 39 评论 -
设计模式——命令模式
是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传递给对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。2)、命令模式使得请求发送者与请求接受者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。3)、在命令模式中,会将一个请求封装为一个对象,以便使用不同的参数(执行者)来表示不同的请求。同时命令模式也支持撤销的操作。4)、增加或删除命令非常方便。原创 2024-02-01 11:30:00 · 2195 阅读 · 34 评论 -
设计模式——装饰者模式
动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则。【2】设计模式属于结构型模式。【3】这种模式创建一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。多层装饰比较复杂。原创 2024-01-21 11:30:00 · 1733 阅读 · 31 评论 -
设计模式——组合模式
1)、组合模式(Composite Pattern):又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。2)、组合模式依据树形结构来组合对象,用来表示部分以及整体层次。3)、这种设计模式属于结构型模式。4)、组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。5)、优点:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无需关系自己处理的是单个对象,还是组合对象,这简化了客户端代码;原创 2024-01-17 11:30:00 · 1750 阅读 · 46 评论 -
设计模式——解释器模式
是指给定一个语言(表达式),定义它的文法的一种表示。并定义一个解释器,使用该解释器来解释语言中的句子(表达式)。【2】在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器。①、扩展性好,由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。②、容易实现,在语法树中的每个表达式节点类都是相似的,所以实现其文法较为容易。①、执行效率较低。原创 2024-01-11 08:55:17 · 1898 阅读 · 35 评论 -
设计模式——享元模式
享元模式(Flyweight Pattern):主要用于减少创建对象的数量,以减少内存占用和提高性能。在面向对象程序的设计过程中,有时需要创建大量相似的对象实例。如果都创建将会消耗很多系统资源,它是系统性能提高的一个瓶颈。但如果将这些对象的相似部分抽取出来共享,则能节约大量的系统资源,这就是享元模式的产生背景。在 Java 中 String 值的存储就使用了享元模式,相同的值只存一个。一、基本介绍1、享元模式(Flyweight Pattern)也叫 “蝇量模式”:运用共享技术有效地支持大量细..原创 2021-03-26 00:18:28 · 2111 阅读 · 37 评论 -
设计模式——代理模式
在现实生活中,一个对象不能直接访问另一个对象,这时需要找中介来访问目标对象,此时的中介就是代理对象。例如:租房子时,我们无法与房东取得联系,只能通过某网站与中介进行交易,获取自己心仪的房间等等。在软件设计中,使用代理模式的例子也很多,例如:访问阿里的 maven 仓库,其就是海外 maven 仓库的代理。还有因为安全原因需要屏蔽客户端直接访问真是对象,如某单位的内部数据等。一、代理模式基本介绍 【1】代理模式:为一个对象提供一个替身,以控制对目标对象的访问。即通过代理对象访问目标对象。这样做的好.原创 2021-03-26 00:14:59 · 1893 阅读 · 4 评论 -
设计模式——迭代器模式
在程序设计中,经常需要访问一个聚合对象中的各个元素,例如:我们使用 list 存储元素,通常的做法是将 list 的创建和遍历放在同一个类中。但这种方法不利于扩展,如果将存储方式更改为数组时,就需要更换迭代方式。违背了 “开闭原则”。“迭代器模式” 能较好的克服以上缺点,它在客户访问类与聚合类之间插入一个迭代器,这分离了聚合对象与遍历行为,对客户也隐藏了其内部细节,满足 “单一职责原则” 和 “开闭原则”,如 Java 中的 Collection、List、Set、Map 等都包含迭代器。一、迭代模.原创 2021-03-25 23:36:25 · 2167 阅读 · 6 评论 -
设计模式——外观模式
外观模式(Facade Pattern):隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统方法的委托调用。现实生活中,常常存在很多复杂的例子,例如:去医院看病,可能要去挂号、门诊、化验、开药、取药,让患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。或者 Java 的三层开发模式等等。软件设计也是如此,当一个系统的功能越来越强,子.原创 2021-03-25 23:30:59 · 2196 阅读 · 7 评论 -
设计模式——访问者模式
在开发中,有些集合存在多种不同的对象实例(例如:男人、女人),且每个对象也存在多种不同的访问者或处理方式(性格:暴躁、温和)。这样的例子还有很多,例如:好声音节目中不同评委,以及评委对他们的评价的选项,等等。这些被处理的数据元素相对稳定,而访问方式多种多样的数据结构,如果使用 “访问者模式” 来处理比较方便。访问者模式能把处理方法从数据结构中分离出来,并可以根据需要增加新的处理方式,且不用修改原来的程序代码与数据结构,这提高了代码的扩展性和灵活性。一、访问者模式基本介绍【1】访问者模式(Visi.原创 2021-03-25 23:10:16 · 1536 阅读 · 6 评论 -
设计模式——模板模式
在面向对象程序设计过程中,程序员常常会遇到如下情况:设计一个系统时知道算法所需的关键步骤,且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如:去医院看病一般都要经历以下流程:挂号、排队、就诊、取药等,其中挂号和排队对每个客户都是一样的,可以在父类中实现,但是就诊和取药是因人而异的。可以延迟到子类中实现。我们把这些规定了流程或格式的实例定义成模板,允许使用者根据自己的需求去更新它。一、模板模式的基本介绍 1)、模板方法模式(Template Meth.原创 2021-03-24 22:45:15 · 2798 阅读 · 6 评论 -
设计模式——中介者模式
在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是 “网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,班长和团支书等干部需要记住同学们的电话,且同学中如果有人的电话修改了,需要告诉所有干部,自己的手机号修改了,这叫作 “牵一发而动全身”,非常复杂。如果把这种 “网状结构” 改为 “星形结构” 的话,将大大降低它们之间的 “耦合性”,这时只要找一个 “中介者” 就可以了。如前面所说的问题,只要在网上建立一个每个干部都可以访问的 “通信录”(中介)就解决了。这样的例子还有很.原创 2021-03-24 22:41:31 · 1561 阅读 · 4 评论 -
设计模式——职责链模式
在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工差旅费的报销,可审批的领导有部门负责人、副总经理、总经理等,但每个领导能批准的金额不同,员工必须根据自己要批准的金额去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。在计算机软硬件中也有相关例子,例如异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有 Struts2 的拦截器、JSP 和 Servlet 的 Filter 等,所有这些,如果用责任链原创 2021-03-24 22:37:25 · 2000 阅读 · 6 评论 -
设计模式——状态模式
在现实生活中,常常会出现这样的事例:一个人的情绪高兴时,会做出一些助人为乐的事情。情绪低落的时候,会做出一些伤天害理的事情。这里的情绪就是状态,对应做的事情就是行为。在软件开发中也是类似的,有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。一、基本介绍【1】状态(State)模式的定义:对有状态的对象,把复杂的 “判断逻辑” 提取到.原创 2021-03-24 22:34:28 · 3635 阅读 · 40 评论 -
设计模式——观察者模式
生活中,许多事物不是单独存在的,其中一个事物发生变化可能会导致一个或多个其他事物的行为也发生变化。例如:公众号的博主与用户之间(每当推送一篇文章,我们就能被动的接收到一篇文章,前提是你关注了它)。在软件设计中也是一样,例如:MVC 模式中的模型与视图的关系。此类场景使用观察者模式来实现的话,就非常方便。一、观察者模块的定义与优缺点 观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做.原创 2021-03-24 22:27:40 · 1291 阅读 · 14 评论