设计模式
郑爱辰
努力改变自己命运的互联网工作者~
展开
-
面试必问的设计模式该如何回答 - 面试总结之设计模式专篇
你是否在面试中被问过设计模式?而回答的时候只能回答单例模式、工厂模代理模式等少数几个,而且还不清楚实现的原理和应用场景,本篇文章就将为你带来常见的设计模式面试题及其答案。原创 2020-07-30 14:26:19 · 3574 阅读 · 0 评论 -
设计模式学习笔记:中介者模式(Mediator)
文章目录一、中介者模式介绍二、实现1、需求场景2、设计3、代码实现4、测试结果保持乐观的心态很重要。一、中介者模式介绍中介者模式是设计模式中行为型模式的一种。这种模式提供了一个中介类,该类处理不同类之间的通信,降低类与类之间的耦合度,使代码易于维护。二、实现1、需求场景设计一个聊天系统,用户之间可以相互聊天。2、设计3、代码实现User(用户类):/** * 用户类 * * @author ZhengNC * @date 2020/10/14 17:39 */publi原创 2020-11-10 11:25:35 · 320 阅读 · 1 评论 -
设计模式学习笔记:适配器模式(Adapter)
文章目录一、适配器模式介绍二、适配器模式示例场景代码示例测试适配器模式不要事事都等着被动接受,主动出击才能更快的成长。一、适配器模式介绍适配器模式是设计模式中结构型模式的一种。它将一个类的接口转换为期望的另外一个接口,适配器模式可以将原本由于接口不匹配而不能一起工作的那些类可以一起工作。适配器模式有很多优点,例如:可以使两个没有的关联的类一起运行、提高类的复用型、增加类的透明度、灵活性好等。但是要注意的是适配器模式只是一个解决现有系统问题的设计模式,不应该用于早期的系统设计之中。在系统中过多的使原创 2020-10-13 18:44:29 · 371 阅读 · 0 评论 -
设计模式学习笔记:访问者模式(Visitor)
文章目录一、访问者模式介绍二、实现1、需求2、设计3、代码实现4、测试访问者模式积极面对生活,善意的对待人和事物,回报将超乎你的想象。一、访问者模式介绍访问者模式是设计模式中行为型模式的一种。在访问者模式中,我们使用访问者类来改变元素类的执行算法。通过这种方式我们可以通过使用不同的访问者在不改变元素类的情况下改变其执行的算法。其主要使用场景如下:对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让原创 2020-10-13 15:46:09 · 268 阅读 · 0 评论 -
设计模式学习笔记:状态模式(State)
文章目录一、状态模式简介二、举例说明三、代码实现1、不使用状态模式的实现方法2、使用状态模式的实现方法3、测试状态模式四、与策略模式的区别学而不思则罔,思而不学则殆。 ——孔子一、状态模式简介状态模式是设计模式中行为型模式的一种。一个对象在它的状态改变时,它的行为也随之改变,看起来好像改变了其类。二、举例说明假如电话有三种状态:通话中、待机中、已关机。四种行为:打电话、挂电话、开机、关机。那么在不同的状态下这四种行为的表现方式肯定不同。例如关机状态下不能打电话,而待机状态下就可以打电话。原创 2020-09-22 17:48:01 · 461 阅读 · 0 评论 -
设计模式学习笔记:备忘录模式(Memento)
文章目录一、备忘录模式简介二、适应场景三、示例演示四、测试示例拥有乐观的心态很重要,它能让工作和生活更加美好。一、备忘录模式简介备忘录模式是设计模式中行为型模式的一种。备忘录模式用于保存对象的状态,以便于在合适的时候恢复对象。备忘录模式使用三个角色:Memento(备忘)、Originator(发起者)、Caretaker(备忘管理者)。二、适应场景需要保存/恢复数据的相关场景。提供一个可回滚的操作。例如:游戏存档、windows 系统的 ctrl + z 、数据库的事务等。三、示原创 2020-09-22 14:43:19 · 199 阅读 · 0 评论 -
设计模式学习笔记:迭代器模式(Iterator)
文章目录一、迭代器模式介绍二、迭代器模式的优点三、示例四、代码实现五、代码执行结果虚心使人进步,骄傲使人落后。一、迭代器模式介绍迭代器模式属于设计模式中行为型模式的一种。迭代器模式提供了一种方法用于访问聚合对象中的各个元素,而又不暴露该对象的内部表示。二、迭代器模式的优点使用迭代器模式可以使得聚合对象中元素的聚合方式改变时,访问者不用修改访问的方式。例如:聚合对象中元素的聚合方式由数组改为链表,如果不使用迭代器模式,那么访问者遍历聚合对象中元素的代码就要修改,如果使用迭代器模式,只需要修改对原创 2020-09-10 22:30:56 · 676 阅读 · 0 评论 -
设计模式学习笔记:享元模式(Flyweight)
文章目录一、享元模式介绍二、使用场景三、实例讲解四、代码示例五、输出结果一直以为人是慢慢长大的,其实不是,人是在一瞬间长大的。一、享元模式介绍享元模式是设计模式中结构型模式的一种。主要用于减少创建对象的数量,以减少内存占用和提高性能。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。二、使用场景系统中有大量相似对象日志对象工厂,获取日志对象时并不会每次创建日志对象,而是通过日志工厂获取,日志工程获取日志对象时会先从缓冲池里取日志对象,取不到才会新建日志对象返回。原创 2020-09-08 18:35:38 · 195 阅读 · 0 评论 -
设计模式学习笔记:组合模式(Composite)
文章目录一、组合模式简介二、组合模式的作用三、组合模式的应用四、示例演示组合模式结构图代码示例测试代码努力才会收获成功,不努力只能永远羡慕别人。一、组合模式简介组合模式是设计模式中结构型模式的一种。它表示了一种将相似对象组合成树状结构的“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。二、组合模式的作用组合模式的目的是:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。实现这个目标的关键之处,是设计一个抽象的组件类,让它可以代表组合对象和叶原创 2020-09-02 22:11:17 · 451 阅读 · 0 评论 -
设计模式学习笔记:桥接模式(Bridge)
文章目录一、桥接模式简介二、适用场景举例三、桥接模式的解决方案四、代码演示桥接模式五、测试桥接模式代码少壮不努力,老大徒伤悲。一、桥接模式简介桥接模式是设计模式中结构型模式的一种。桥接的作用是把抽象化和实例化解耦,使二者可以独立变化。桥接模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。使得实体类和实现类可以被结构化的改变而不互相影响。桥接模式最适合用来解决由多种变化维度导致的继承类爆炸式增长的问题。二、适用场景举例场景如下:家具有很多种,例如桌子、椅子等,每种家具根据不同的原创 2020-09-01 10:41:58 · 309 阅读 · 0 评论 -
设计模式学习笔记:模板方法模式(Template Method)
为之则易,不为则难。一、模板方法模式简介模板方法模式是设计模式中行为模式的一种。它提供了一种调用类中的方法的方式/模板。定义一个抽象类,类中定义一个模板方法,此方法以一定的方式调用类中的其它方法(一般为抽象方法,由子类实现)。子类按需提供方法的实现方式,而调用方式由模板方法决定。原创 2020-08-18 22:08:44 · 368 阅读 · 0 评论 -
设计模式学习笔记:策略模式(Strategy)
文章目录一、策略模式介绍二、代码示例1、需求场景2、实现2.1 不使用策略模式的实现方式2.2 使用策略模式的实现方式2.3 测试总之岁月漫长,然而值得等待。 ——春上春树一、策略模式介绍策略模式是设计模式中行为模式的一种。它提供了在运行中改变一个类的行为的方法。如下图,用户选择合适的策略去创建策略的使用者:二、代码示例1、需求场景现在有一个需求:用户在支付的时候可以选择不同的支付方式,要求后续可以方便的增加新的支付方式。2、实现2.1 不使用策略模式原创 2020-08-14 11:35:49 · 365 阅读 · 0 评论 -
设计模式学习笔记:外观模式(Facade)
外观模式是设计模式中结构型模式的一种。它隐藏了系统内部复杂的实现,向客户端提供一个可以访问系统的接口。这种设计模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。原创 2020-07-30 11:37:49 · 326 阅读 · 0 评论 -
设计模式学习笔记:原型模式(Prototype)
原型模式属于设计模式中的创建型模式。原型模式使用较小的代价创建重复的对象,提供了一种创建对象的最佳方式。原型模式通常使用克隆来创建对象,它解决的问题是有些对象的创建代价过大的问题,例如一个对象需要花费较大的代价查询数据库后创建,这种情况我们就可以缓存这个对象,下一次创建时直接返回它的克隆,需要时再更新数据库,以此来减少数据库的调用。原创 2020-07-22 16:58:20 · 233 阅读 · 0 评论 -
设计模式学习笔记:责任链模式(Chain of Responsibility)
责任链模式属于设计模式中的行为型模式。顾名思义,责任链模式就是为请求者创建一个接收者对象的链,对请求的发送者和接收者解耦。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依次类推。原创 2020-07-22 14:14:35 · 309 阅读 · 0 评论 -
设计模式学习笔记:命令模式(Command)
在一切变好之前,我们总要经历一些不开心的日子,这段日子也许很长,也许只是一觉醒来。有时候,选择快乐,更需要勇气。命令模式是设计模式中行为型模式的一种。它是一种数据驱动的模式,将命令封装成一个对象传递给调用者,调用者根据请求的不同寻找合适的命令对象,命令对象调用相应的接收者完成请求。原创 2020-07-21 23:06:45 · 351 阅读 · 0 评论 -
设计模式学习笔记:建造者模式(Builder)
文章目录一、建造者模式介绍二、建造模式的实现方式方式一方式二三、建造者模式和工厂模式的比较一、建造者模式介绍建造者模属于设计模式中的创建型模式。建造者模式提供了一种最佳的创建对象的方式。建造者模式将一个复杂的对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。二、建造模式的实现方式方式一建造过程:客户端直接和Director(原创 2020-07-21 11:38:58 · 451 阅读 · 0 评论 -
设计模式学习笔记:单例模式(Singleton)
一、单例模式介绍单例模式属于设计模式中创建型模式的一种,它时 Java 中最简单的设计模式之一。它提供了一种最佳的创建对象的方式。单例模式涉及到一个单一的类,该类负责创建自己的对象,同时要保证只有单个对象被创建,并且提供访问该对象的方式,可以直接使用,不需要实例化该类的对象。二、实现方式单例模式的实现有多种方式,其中分为线程安全的和非线程安全两类。原创 2020-07-16 17:07:29 · 563 阅读 · 2 评论 -
设计模式学习笔记:工厂模式(Factory)
一、工厂模式介绍工厂模式属于设计模式中的创建型模式。工厂模式提供了一种最佳的创建对象的方式。工厂模式从简单到复杂有三种:简单工厂、工厂方法、抽象工厂。三种工厂模式的简单区分:简单工厂:根据传递给工厂类的不同参数创建不同的产品。例如:给生产汽车的工厂传递不同的参数生原创 2020-07-14 15:20:23 · 878 阅读 · 0 评论 -
设计模式学习笔记:装饰器模式(Decorator)
如果你要做一件事,不要到处宣言自己的想法,只管安安静静地去做,值不值,时间是最好的证明,自己的人生,得自己负责。一、装饰器模式介绍装饰器模式是设计模式中结构型模式的一种。装饰器模式其实可以看作另一种方式的继承,使用装饰器模式可以向现有的类添加新功能,同时又不改变其结构。例如:煎饼加上鸡蛋变成鸡蛋煎饼,再加上青菜就是青菜鸡蛋煎饼,煎饼就是被装饰的对象,鸡蛋和青菜就是装饰器。原创 2020-07-02 19:19:12 · 383 阅读 · 0 评论 -
设计模式学习笔记:代理模式(Proxy)
所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心底里看得起自己。一、代理模式介绍代理模式是设计模式中结构型模式的一种。当访问一个对象的时候因为一些原因不去访问这个对象,而是通过一个代理对象去访问这个对象,这个模式就是代理模式。例如:购买火车票不去车站买,而是去代售点买票。二、Java 中代理的三种方式1、静态代理静态代理的使用需要被代理的对象和代理对象拥有相同的方法,原创 2020-07-01 15:49:04 · 333 阅读 · 0 评论 -
设计模式学习笔记:观察者模式(Observer)
最近学习比较迷茫,不知道学点什么好。正好昨天项目组的技术分享会讲了设计模式,于是决定继续学习一下设计模式。本篇文章记录了我对观察者模式的理解,如果有偏差,期待指正_一、观察者模式介绍观察者模式是设计模式中行为模式的一种。当对象间存在一对多的依赖关系时,被依赖的对象发生了变化,要求依赖它的所有对象都要做出相应的变化或动作,那么被依赖的对象就是被观察者(主题对象),依赖这个对象的其它对象被称为观察者。二、设计实现需原创 2020-06-30 18:18:47 · 456 阅读 · 0 评论