《设计模式》专栏
文章平均质量分 76
设计模式
Run,boy
别犹豫,就现在
展开
-
23种设计模式
1、工厂模式(Factory Pattern)2、抽象工厂模式(Abstract Factory Pattern)3、单例模式(Singleton Pattern)4、建造者模式(Builder Pattern)5、原型模式(Prototype Pattern)6、适配器模式(Adapter Pattern)7、桥接模式(Bridge Pattern)8、组合模式(Composite Pattern)9、装饰器模式(Decorator Pattern)10、外观模式(Facade Patte原创 2023-05-06 16:40:38 · 619 阅读 · 0 评论 -
组合设计模式
将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。维护和展示部分-整体关系的场景如树形菜单、文件和文件夹管理从一个整体中能够独立出部分模块或功能的场景。只要是树形结构,就考虑使用组合模式定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性.组合模式可以很好地管理树形结构,它将复杂的结构分解成了一个个简单的对象,从而使得代码更加简洁和易于维护。原创 2023-05-06 11:01:18 · 235 阅读 · 0 评论 -
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。需要保存和恢复数据的相关状态场景记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。总结:在上述代码中,Originator角色表示发起人,用来保存当前的网址状态,并创建备忘录对象;Memento角色表示备忘录,用来保存网址状态;Caretaker角色表示备忘录管理员,用来管理备忘录对象。原创 2023-05-06 10:34:50 · 1021 阅读 · 0 评论 -
访问者模式
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是 visit 方法的参数定义哪些对象是可以被访问的。原创 2023-05-06 10:12:12 · 820 阅读 · 0 评论 -
享元设计模式
内部状态是对象可共享出来的信息,存储在享元对象内部并目不会随环境改变而改变它简单地说就是一个产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现。享元模式是一种优化性能的设计模式,通过共享相同状态的对象来减少内存占用。在购物车场景中,商品对象可以被共享,而优惠券对象则不能被共享,因为每个优惠券有独特的代码和折扣金额。享元工厂负责管理享元对象的创建和共享。测试案例的输出结果表明,购物车中的商品和优惠券都被正确地显示出来了。原创 2023-05-05 22:48:29 · 625 阅读 · 0 评论 -
桥梁设计模式
将抽象和实现解耦,使得两者可以独立地变化总之,桥梁模式在生活中有很广泛的应用,可以将不同的对象进行解耦,使它们可以独立变化,从而提高系统的灵活性和可扩展性。它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色般是抽象类一修正抽象化角色: 它引用实现化角色对抽象化角色进行修正平台,提供了一些方法,用于处理买家和卖家之间的交流。具体实现化角色(Concretelmplementor):买家和卖家,实现了平台提供的方法。交流方式,包括文字、语音、视频等多种方式。原创 2023-05-05 21:51:49 · 776 阅读 · 0 评论 -
迭代器模式
它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节抽象选代器负责定义访问和遍历元素的接口,而且基本上是有固定的 3 个方法: first0获得第一个元素,next0访问下一个元素,isDone(是否已经访问到底部 (Java 叫做 hasNext0方法)。// 将游标指向第一个元素 void next();// 将游标指向下一个元素 boolean isDone();// 判断是否遍历完所有元素 Object currentItem();// 获取当前元素 }原创 2023-05-04 23:58:33 · 462 阅读 · 0 评论 -
策略设计模式
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。} }} }原创 2023-05-04 23:25:00 · 527 阅读 · 0 评论 -
装饰器模式
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。Component 是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当 Component 抽象构件。原创 2023-05-04 22:56:14 · 631 阅读 · 0 评论 -
命令设计模式
将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化该角色就是干活的角色,命令传递到这里是应该被执行的,具体到我们上面的例子中就是Group 的三个实现类 (需求组,美工组,代码组)。} }} }} }} }命令模式可以将请求和处理请求的对象解耦,使得请求者和接收者之间没有直接关系,从而提高系统的灵活性和可扩展性。原创 2023-05-04 22:22:00 · 1571 阅读 · 0 评论 -
中介者模式
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。抽象中介者角色定义统一的接口,用于各同事角色之间的通信。原创 2023-05-04 21:36:57 · 856 阅读 · 0 评论 -
原型设计模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原创 2023-05-04 20:58:01 · 51 阅读 · 0 评论 -
代理设计模式
为其他对象提供一种代理以控制对这个对象的访问抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。原创 2023-05-04 20:30:12 · 1670 阅读 · 0 评论 -
抽象工厂模式
为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类// 汽车工厂不生产服装,这里返回null } } public class ClothingFactory implements Factory {// 服装工厂不生产汽车,这里返回null } public Clothing createClothing() {} }System . out . println("汽车启动了!");System . out . println("穿上了新衣服!");} }原创 2023-05-03 22:28:20 · 691 阅读 · 0 评论 -
单例设计模式
确保某一个类只有一个实例,且能自行实例化并向整个系统提供这个实例。原创 2023-05-03 21:50:24 · 738 阅读 · 0 评论 -
解释器模式
给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子具体的解释任务由各个实现类完成,具体的解释器分别由 TerminalExpression 和 Non-terminalExpression 完成。||、&&、、==,其中、==运算符的优先级高于||和&&原创 2023-05-03 20:44:43 · 746 阅读 · 0 评论 -
模板方法模式
定义一个操作中算法的框架,将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用模板方法模式,实现在项目当中用户的不同行为日志处理,比如用户登录、现金交易、领取活动优惠券、注意不同用户行为日志格式不一样需要下推到子类实现记录到数据库。// 将日志保存到数据库中 // ... } }} }} }} }原创 2023-05-03 16:55:22 · 943 阅读 · 0 评论 -
观察者模式
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责: 管理观察者并通知观察者。原创 2023-05-03 15:02:30 · 4224 阅读 · 0 评论 -
门面设计模式
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类// 报表服务接口类 interface ReportService {// 服务A class ReportServiceA implements ReportService {原创 2023-05-03 14:23:59 · 1432 阅读 · 0 评论 -
状态机模式
当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换// 订单创建状态 class CreatedState extends OrderState {System . out . println("订单已支付");System . out . println("订单已取消");System . out . println("订单尚未支付,不能发货");原创 2023-05-03 11:35:57 · 1668 阅读 · 0 评论 -
适配器模式
适配器模式原创 2023-05-02 21:36:27 · 1273 阅读 · 0 评论 -
工厂设计模式
设计模式之工厂原创 2022-12-25 16:41:01 · 138 阅读 · 0 评论 -
建造者模式
建造者模式原创 2022-12-24 21:31:07 · 990 阅读 · 1 评论 -
责任链模式
责任链自我总结原创 2022-11-09 00:29:50 · 551 阅读 · 2 评论