
设计模式
文章平均质量分 94
恋喵大鲤鱼
一条不止于编码的鱼。
展开
-
GO 语言实现设计模式【全】
文章目录0.前言1.责任链模式概念示例登机过程测试程序运行结果2.命令模式概念示例电饭煲接收器电饭煲命令测试程序运行结果3.迭代器模式概念示例班级成员运行结果4.中介者模式概念示例飞机对象机场塔台测试程序运行结果5.备忘录模式概念示例闯关游戏测试程序运行结果6.观察者模式概念示例通知方式信用卡业务测试程序运行结果7.状态模式概念示例电池状态IPhone手机测试程序运行结果8.策略模式概念示例四季天气城市气候测试程序运行结果9.模板方法模式概念示例演员基类具体演员测试程序运行结果10.访问者模式概念示例员工.转载 2022-03-12 21:27:04 · 2422 阅读 · 0 评论 -
行为型设计模式(1)—— 责任链模式(Chain of Responsibility Pattern)
1.简介经常听身边的同事说其在项目中用到了责任链模式,今天就来学习一下什么是责任链模式。责任链模式(Chain of Responsibility)是设计模式的一种,属于行为型设计模式。顾名思义,责任链模式为请求创建了一个链,请求在链上被处理。通常某个处理器如果不能处理该请求,那么它会把相同的请求传给链上的下一个处理器。2.使用场景如果一个请求需要经过多个处理步骤,多个处理步骤抽象成一条执行链,那么便可以使用责任链模式。责任链的使用场景一般有:(1)向多处理器提交一个请求,最终运行时只会有一个原创 2021-06-14 20:31:31 · 499 阅读 · 0 评论 -
创建型设计模式(4)—— 抽象工厂模式(Abstract Factory Pattern)
使用设计模式可以提高代码的可复用性、可扩充性和可维护性。抽象工厂模式(Abstract Factory Pattern)属于创建型模式,为创建一组相关或者相互依赖的对象(产品族)提供一个抽象类接口,而无需指定它们的具体类。。产品族的定义是:某个具体工厂生产的所有类型的产品,比如定义了一个抽象工厂接口A,它可以生产三种产品:p1、p2、p3,而这三个产品就叫一个产品族。抽象工厂模式可以说是工厂方法模式的升级版,当需要创建的产品有多个产品族时使用抽象工厂模式是比较好的选择。那什么是多个产品族呢?拿我们在。原创 2017-03-02 15:25:42 · 1368 阅读 · 1 评论 -
行为型设计模式(2)—— 模板方法模式(Template Method Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。模板方法模式(Template Method Pattern)属行为型,在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中,使子类可以不改变算法结构即可重定义算法的某些特定步骤。模版方法模式结构图: AbstractClass:实现了模板方法,定义了算法骨架。 ConcreteClass:实现抽象类中的抽象方法,完成完整的算法。原创 2017-03-05 16:48:20 · 1478 阅读 · 0 评论 -
行为型设计模式(5)—— 策略模式(Strategy Pattern)
1.概述定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。2.原创 2017-02-16 23:21:01 · 1369 阅读 · 5 评论 -
结构型设计模式(2)—— 外观模式(Facade Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。外观模式(Facade Pattern)属于结构型模式,提供了一个统一的类接口,用来访问子系统的一群类接口。外观定义了一个高层类接口,让子系统更容易使用。要想使用外观模式,我们需要创建一个函数接口简化而统一的类,用来包装子系统中一个或多个复杂的类。外观模式类结构清晰,容易理解,允许我们让客户和子系统之间避免紧耦合。类图结构如下:原创 2017-03-05 11:06:20 · 1208 阅读 · 0 评论 -
结构型设计模式 (1)—— 适配器模式(Adapter Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。适配器模式(Adapter Pattern)属结构性模式,将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。何谓适配器模式?适配器模式就是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。在适配器模式中,我们可以定义一个包装类,包装不兼容的函数接口和提供该函数接口的对象,原创 2017-03-05 15:03:38 · 1381 阅读 · 0 评论 -
创建型设计模式(3)—— 工厂方法模式(Factory Method Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。工厂方法模式(Factory Method Pattern)属于创建型模式,定义一个创建对象的接口,但由子类决定实例化某一个类,让工厂类把实例化推迟到子类。在前面的设计模式(四)——简单工厂模式中我们介绍了简单工厂模式,接下来将介绍下工厂方法模式,它同样是创建型设计模式,有相似之处,但又有些不同,文章的末尾会介绍他们之间的不同。这里借用...原创 2017-03-01 22:30:58 · 1367 阅读 · 1 评论 -
行为型设计模式(4)—— 观察者模式(Observer Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。观察者模式(Observer Pattern)属于行为型模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。例如,在实际生活中,报纸出版社和订阅者之间存在着一对多的关系。当你向出版社订阅报纸时,只要他们有新报纸出版,就会送一份过来。当你不需要看报纸,可以取消订阅。只要报社还在运原创 2017-02-25 21:19:28 · 1067 阅读 · 0 评论 -
行为型设计模式(3)—— 命令模式(Command Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。命令模式(Command Pattern)属行为型,将请求封装成对象,以便使用不同的请求、请求日志或请求队列等来参数化其他对象。命令模式也支持撤销操作。通俗来讲,通过增加一个命令对象,放在请求者与请求的接收者之间,来达到二者的解耦合。一个请求对应一个命令对象,命令对象将请求的接收者和完成请求的基本操作封装在一起,对外提供execute(原创 2017-03-04 21:37:53 · 1373 阅读 · 0 评论 -
创建型设计模式(1)—— 单例模式(Singleton Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。单例模式(Singleton Pattern),确保一个类只有一个实例,并提供一个全局访问点。有一些类对象我们只需要一个,比方说线程池(threadpool)、缓存(cache)、对话框、注册表(registry)、日志对象,充当打印机、显卡等设备的驱动程序的对象。此时,可以使用单例模式。单例模式的类图结构: 2.简单实现单例模式可以原创 2017-03-03 21:47:55 · 1521 阅读 · 5 评论 -
认识 UML 类关系——依赖、关联、聚合、组合、泛化
在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合度依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强。下面根据个人理解,尝试讲解这五种类关系。以 C++ 给出示例代码。原创 2017-03-02 22:41:32 · 108367 阅读 · 28 评论 -
一文读懂设计模式
设计模式(Design Pattern)是一套被反复使用、多数知晓、分类编目、代码设计经验的总结。使用设计模式可提高代码的简洁、易读和可维护性,让代码易于被他人理解且保证软件的可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式这个术语是由 Erich Gamma 等人在 20 世纪 90 年代从建筑设计领域引入的,它是对软件设计领域普遍存在的各种问题所提出的解决方案,不涉及完成应用程序的具体的类或对象。原创 2017-02-16 17:06:26 · 809 阅读 · 0 评论 -
创建型设计模式(2)—— 简单工厂模式(Simple Factory Pattern)
1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。简单工厂模式(Simple Factory Pattern)属于创建型模式。简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例,它经常被用于封装创建对象的代码。简单工厂模式类图结构: SimpleFactory:简单工厂类,简单工厂模式的核心,它负责实现创建所有实例。简单工厂创建产品的方法可以被外界直接调用来创建所需的产品对象。......原创 2017-02-28 22:56:07 · 1488 阅读 · 2 评论 -
结构型设计模式(3)—— 装饰者模式(Decorator Pattern)
使用设计模式可以提高代码的可复用性、可扩充性和可维护性。装饰者模式( Decorator Pattern)属于结构型模式,。它是通过创建一个包装对象,通过包装对象来包裹真实的对象,以达到装饰目的。装饰者模式在现实生活中有很多例子,比如一杯咖啡,我们可以往其中加入一些调料,加入巧克力变成摩卡咖啡,加入牛奶变成拿铁咖啡,也可以继续往摩卡或拿铁中加入焦糖、豆浆、奶泡等其他的调料,变成不同风味的咖啡。如果每一种风味的咖啡都变成单独的类,那么不同调料组合而成的咖啡种类数量会非常庞大,会造成类膨胀。原创 2017-02-27 22:25:59 · 1261 阅读 · 0 评论