
设计模式(Design pattern)
文章平均质量分 92
在软工程中,设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的,设计模式是针对软件设计中常见问题的工具箱,其中的工具就是各种经过实践验证的解决方案。
ChaITSimpleLove
云原生领域爱好者!
展开
-
诗集鉴赏别有韵味——单例模式与工厂模式的浪漫邂逅
带入 C# 程序 OOP 的视角鉴赏古代美女,领悟古典诗歌的魅力所在!原创 2024-12-01 19:00:39 · 628 阅读 · 0 评论 -
如何使用单例模式确保服务 “负载均衡” 的唯一性?
如何通过 SingletonConstructor(单例对象构造器)快速地创建单例对象,在单进程应用中确保对象的唯一性至关重要!原创 2022-10-14 19:01:00 · 905 阅读 · 2 评论 -
设计模式 | 代理模式
1 | 代理模式的概述我们回顾以下电子商务中常见的现象 =》代购,简单的说就是找人帮忙购买所需的商品,当然代购者可能需要向实施代购的人支付一定的费用。代购的两种情况:当地购买不到该产品,或者当地该产品的价格比其他地区贵,因此托人在其他地区甚至国外购买该商品; 消费者对该产品的相关信息认知缺乏,自己无法确定商品的实际价值而又不想被商家“坑”,此时只好委托中介机构帮忙讲价或代买,典型的代购网站应用而生;代理模式的定义代理模式:给某一个对象提供一个代理或占位服务,并由代理对象来控制对原对象的.原创 2021-04-16 10:56:47 · 1282 阅读 · 0 评论 -
设计模式 | 享元模式
1 | 享元模式的概述如果一个软件系统在运行时所创建的相同或相似的对象数量太多,将导致运行代价过高,带来系统资源浪费、性能下降等问题。例如:在一个文本字符串中存在很多重复的字符,如果每一个字符都用一个单独的对象来表示,将会占用较多的内存空间,那么如何避免系统中出现大量相同或相似的对象,同时又不影响客户端程序通过面向对象的方式对这些对象进行操作呢?享元模式正是为解决这―类问题而“诞生”。享元模式通过共享技术实现相同式相创对免的重用,在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同原创 2021-04-12 22:23:41 · 444 阅读 · 0 评论 -
设计模式 | 外观模式
1 | 外观模式的概述在软件开发中,有时候为了完成一项较为复杂的功能,一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现,由于涉及的类比较多,导致使用时代码比较复杂,此时特别需要一个类似服务员一样角色,由它来负责和多个业务类进行交互,而客户类只需与该类交互。外观模式通过引入一个新的外观类(Facade)来实现该功能,外观类充当了软件系统中的"服务员",它为多个业务类的调用提供了一个统一的入口,简化了类与类之间的交互。在外观模式中,需要交互的类被称为子系统(Subsystem原创 2021-04-08 01:23:55 · 2898 阅读 · 0 评论 -
设计模式 | 装饰模式
1 | 装饰模式的概述我们在了解装饰模式之前,先回顾下生活中的几个常见现象,举例如下:新房的装修,房屋装修并没有改变房屋居住的本质,但可以让房屋变得更漂亮,更温馨,更实用,更满足居家需求。 相片的包装,照相馆中把原相片清洗出来后,会对上面做些包装/装饰,相片镀膜,添加相框等处理,让整体更加美观,防潮保存更长的时间。在软件设计中,类似上面的场景我们也可以把对象在不改变结构的情况下对其加工扩展修饰,使得对象具有更加强大的功能,这种技术在设计模式中就叫装饰模式。装饰模式可以在不改变一个对象本身功能的基原创 2021-03-26 15:50:50 · 4619 阅读 · 1 评论 -
设计模式 | 组合模式
1 | 组合模式的概述树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单结构、办公系统中的公司组织结构等。对于所有与目录结构相类似的树形结构,当容器对象(例如文件夹)的某一个方法被调用时,将遍历整个树形结构。寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,例如子文件夹和文件)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户原创 2021-03-25 11:32:30 · 444 阅读 · 0 评论 -
经典永不过时!重温设计模式
【| 导语】在软工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的,设计模式是针对软件设计中常见问题的工具箱,其中的工具就是各种经过实践验证的解决方案。即使你从未遇到过这些问题,了解模式仍然非常件有用,因为它能指导你如何使用面向对象的设计原则来解决各种问题。大家好,我是Alex,今天谈一谈设计模式,一名优秀的开发,应该多少都需要了解一些常...转载 2021-03-24 14:27:25 · 465 阅读 · 0 评论 -
设计模式 | 桥接模式
1 |桥接模式的概述桥接模式是一种很实用的对象结构型设计模式,它又被称为柄体模式(Handle and Body)或接口(Interface)模式。如果系统种某个类存在两个独立变化的维度。通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展。桥接模式使用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并且易于扩展,同时有效控制了系统中类的个数。桥接模式的定义桥接模式:将抽象部分与它的实现部分解耦,使得两.原创 2021-03-23 12:07:37 · 400 阅读 · 0 评论 -
设计模式 | 适配器模式
1| 适配器模式概述我们联想一下常见的生活习惯,我们国家的生活用电的电压是 220V,而手机,笔记本,电视机等的设备的实际工作电压没有这么高,为了使这些设备可以使用 220V 的生活用电,需要电源适配器(AC Adpater),也就是充电器或变压器,有了这个电源适配器,原本不能直接工作的生活电器等设备就可以兼容使用了,而这其中的电源适配器就充当了一个适配器的角色。同样的在软件开发中,有时也会出现这种类似的不兼容的情况,我们也可以像引入一个电源适配器那样引入一个称之为适配器的角色来协调这些相互之.原创 2021-03-22 00:50:57 · 410 阅读 · 0 评论 -
设计模式 | 原型模式
1 | 原型模式概述原型模式是一种特殊的创建型模式,它通过复制一个已有对象来获取更多相同或相似的对象。原型模式可以提高系统同类型对象的创建效率,简化创建过程。《西游记》中”孙悟空拔毛变猴“的故事几乎人人皆知,孙悟空用猴毛根据自己的形象,复制出很多和自己长的一摸一样的”分身“。类似这种场景在面向对象的软件设计领域被称为原型模式,孙悟空则被成为原型对象。原型模式的定义原型模式:使用原型实例指定待创建对象的类型,并通过复制这个原型来创建新的对象。 Prototype Pattern:Spe.原创 2021-03-15 01:07:14 · 990 阅读 · 3 评论 -
设计模式 | 建造者模式
1 | 建造者模式概述无论是在现实世界中还是软件系统中,都存在一些复杂的对象,他们拥有多个组成部分(部件),例如汽车,它包括车轮、方向盘、发动机等多种部件。对于大多数用户而言,并不知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车。思考:面对上面这种场景,如何将这些部件组装成一辆完整的汽车并返回给用户,而这种场景恰好就是建造者模式需要解决的问题。建造者模式可以将部件本身和它们的组装过程分开,关注如何一步步创建一个包含多个组成部分的复杂对象,用户只需要指定复杂对象的类型即可得到原创 2021-03-10 02:07:53 · 1135 阅读 · 0 评论 -
设计模式 | 抽象工厂模式
1 | 抽象工厂模式的概述1.1 基本思想工厂方法模式通过引人工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。有时候可能需要一个工厂能够提供多种产品对象,而不是单一的产品对象,例如一个电器工厂,它可以生产电视机、电冰箱、空调等多种电器,而不是只生产某一种电器。此时,可以考虑将-些相关的产品组成一个“产品族”,由同个工厂来统一生产,这就是本章将要学习 的抽原创 2021-03-07 23:00:04 · 338 阅读 · 0 评论 -
设计模式 | 工厂(方法)模式
1 |工厂(方法)模式概述问题思考,使用简单工厂模式设计的按钮工厂类可以返回一个具体类型的按钮实例,例如矩形按钮,圆形按钮,菱形按钮等,如果要在系统中新增一个类型的按钮,例如椭圆形按钮,就需要增加一个具体的产品类,同时还需修改工厂类代码,这就使得整个设计在一定程度上违背了开闭原则。修改方案,不再提供一个按钮工厂类来统一负责所有产品的创建,而是将具体产品的创建过程交给专门的工厂子类去完成。这种抽象化的结果是使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需为这种.原创 2021-03-07 16:40:45 · 331 阅读 · 0 评论 -
设计模式 | 简单工厂模式
1 | 概述简单工长模式并不属于 GoF 的 23 种经典设计模式,但通常将它作为学习其他工厂模式的基础。举例:考虑一个水果农场,当用户需要一种水果时,该农场能够根据用户所提供的水果名称返回该水果。类比:水果农场(工厂/Factory),农场的水果(产品/Product),水果的名称(参数/arg);作为最简单的设计模式之一,简单工厂模式的设计思想和实现过程都比较简单,其基本实现流程如下:将需要创建的各种不同产品对象的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行原创 2021-03-06 12:08:28 · 363 阅读 · 4 评论 -
设计模式 | 开篇简介
1 | 设计模式的诞生与发展模式(Pattern)起源于建筑业而非软件业,模式之父——美国加利福尼亚大学环境结构中心研究所所长 Christopher Alexander 博士用了大约 20 年的时间,对舒适住宅和周边环境进行了大量的调查和资料收集工作,发现人们对舒适住宅和城市环境存在一些共同的认同规律,并将其归纳为 253 个模式 ==》《A Pattern Language:Towns,Buildings,Construction》(中文译本名为《建筑模式语言:城镇 · 建筑 · 构造》);A原创 2021-03-05 23:54:14 · 374 阅读 · 0 评论 -
设计模式 | 单例模式
单例模式一:public class SingleProfit{ //创建私有化静态obj锁 private static object _ObjLock = new object(); //创建私有静态字段,接收类的实例化对象 private static SingleProfit _SingleProfit = null; //构造函数私有化 ...原创 2018-05-24 18:18:45 · 863 阅读 · 0 评论