
设计模式
文章平均质量分 59
秀秀_heo
一个学习前端开发的大学生,博客为自己的学习笔记,仅供个人学习使用。
展开
-
【期末速成】软件设计模式与体系结构
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,人们可以无数次地重用那些已有的解决方案,无须再重复相同的工作。模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。原创 2025-01-23 17:57:17 · 1044 阅读 · 0 评论 -
软件设计原则
软件设计原则是指导软件开发者设计出高质量、易维护的软件的核心思想和准则。它们为解决复杂软件问题提供了结构化方法,确保系统具备高内聚、低耦合等优秀特性。:子类应该通过新增方法来扩展父类的方法,而不要在子类中改变父类已经实现的方法。:一个类应该仅有一个引起其变化的原因,即一个类只负责一个职责。:软件实体(类、模块、函数)应该对扩展开放,对修改关闭。:高层模块不应该依赖于低层模块,它们都应该依赖于抽象。的内部方法,形成了对象链,增加了模块之间的耦合度。,违反了高内聚低耦合的设计原则。原创 2024-11-20 17:00:06 · 1076 阅读 · 0 评论 -
UML(统一建模语言) 类图
UML(Unified Modeling Language,统一建模语言)类图是用于描述系统中类的静态结构及其关系的模型。它是面向对象设计和建模中最常用的一种图示。原创 2024-11-20 16:30:31 · 1075 阅读 · 0 评论 -
【JavaScript】设计模式
发布订阅模式:可以实现的效果类似观察者模式,但是两者略有差异,一句话描述:一个有中间商(迭代器模式在js中有大量的默认实现,因为遍历或者说迭代时日常开发中的高频操作,比如。在JavaScript中,工厂模式的表现形式就是一个直接调用即可返回新对象的函数。目前说到设计模式,一般指的是《设计模式:可复用面向对象软件的基础》一书中提到的。的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。代理模式的核心是,通过一个代理对象拦截对原对象的直接操纵。工厂模式:JS中的表现形式,返回新对象的函数(方法)原创 2024-02-28 18:53:56 · 1445 阅读 · 0 评论 -
【设计模式】职责链模式
使多个对象都有机会处理请求,从而避免了请求的发送者与多个接收者直接的耦合关系,将这些接收者连接成一条链,顺着这条链传递该请求,直到找到能处理该请求的对象。原创 2024-08-24 09:56:15 · 434 阅读 · 0 评论 -
【设计模式】模板方法模式和迭代器模式
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。运用了模板方法模式的程序中,子类方法种类和执行顺序都是不变的,但是子类的方法具体实现则是可变的。父类是个模板,子类可以添加,就增加了不同的功能。模板方法模式由两部分组成,第一部分是抽象父类,第二部分是具体的实现子类。子类的算法框架,包括实现一此公共方法以及封装子类中所有方法的执行顺序。原创 2024-08-24 09:55:45 · 464 阅读 · 0 评论 -
【设计模式】组合模式和(宏)命令模式
有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。需要一种松耦合的方式来设计程序,使得发送者和接收者能够消除彼此,之间的耦合关系。它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式在对象间形成树形结构;组合模式中基本对象和组合对象被一致对待:无须关心对象有多少层,调用时只需在根部进行调用。这里是使用了 扫描文件的示例,还有一个应用场景是 动态声明 menu 菜单栏。原创 2024-08-24 09:55:15 · 507 阅读 · 0 评论 -
【设计模式】模块模式和桥接模式
能够使一个单独的对象拥有公共/私有的方法和变量,从而屏蔽来自全局作用域的特殊部分。这可以减少我们的函数名与在页面中其他脚本区域内定义的函数名冲突的可能性。比如,一个 toast ,给一个元素绑定动画效果,可以将动画效果的实现隔离,从而不同的 toast 可以在 与不同的动画相结合。模块化模式最初被定义为在传统软件工程中为类提供私有和公共封装的一种方法。使用场景:一个类存在两个或多个独立变化的维度,且这两个维度都需要进行扩展。桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。原创 2024-08-24 09:54:44 · 566 阅读 · 0 评论 -
【设计模式】观察者模式和订阅发布模式
当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,解决了主体对象与观察者之间功能的耦合,即一个对象状态改变给其他对象通知的问题。一旦观察目标的状态发生改变,所有的观察者都将得到通知。缺点:观察者模式虽然实现了对象间依赖关系的低耦合,但却不能对事件通知进行细分管控,如“筛选通知”,“指定主题事件通知”。优势:目标者与观察者,功能耦合度降低,专注自身功能逻辑;观察者被动接收更新,时间上解耦,实时接收目标者更新状态。前端通常的应用是导航和面包屑,面包屑发生改变,对应的页面内容也会发生改变。原创 2024-08-19 21:19:05 · 947 阅读 · 0 评论 -
【设计模式】策略模式和代理模式
策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。该模式主要解决在有多种算法相似的情况下,使用 if…它的优点是算法可以自由切换,同时可以避免多重 if…else 判断,且具有良好的扩展性。类似于我们在路由的匹配使用策略模式。前端应用在转换后端数据为更优雅的页面展示信息。es6 中的 proxy 就是代理模式的一个非常好的体现。原创 2024-08-19 21:18:25 · 399 阅读 · 0 评论 -
【设计模式】装饰器模式和适配模式
装饰器模式能够很好的对已有功能进行拓展,这样不会更改原有的代码,对其他的业务产生影响,这方便我们在较少的改动下对软件功能进行拓展。比如 axios 在 nodejs 和浏览器环境下都可以使用,本质上就是使用了适配器模式。将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。类似于 router 的前置守卫和后置守卫。原创 2024-08-19 21:17:53 · 674 阅读 · 0 评论 -
【设计模式】建造者模式和单例模式
要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么,而不关心创建的过程。而建造者模式关心的是创建这个对象的整个过程,甚至于创建对象的每一个细节。建造者模式(builder pattern)属于创建型模式的一种,提供一种创建复杂对象的方式。建造者模式是一步一步的创建一个复杂的对象,它允许用户只通过指定复杂的对象的类型和内容就可以构建。建造者模式将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示。象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。原创 2024-08-19 21:17:23 · 619 阅读 · 0 评论 -
【设计模式】工厂模式和抽象工厂模式
但是在函数内包含了所有对象的创建逻辑和判断逻辑的代码,每增加新的构造函数还需要修改判断逻辑代码。当我们的对象不是上面的3个而是10个或更多时,这个函数会成为一个庞大的超级函数,变得难以维护。简单工厂的优点在于,你只需要一个正确的参数,就可以获取到你所需要的对象,而无需知道其创建的具体细节。所以,简单工厂只能作用于创建的对象数量较少,对象的创建逻辑不复杂时使用。原创 2024-08-19 21:16:53 · 480 阅读 · 0 评论 -
【设计模式】构造器模式和原型模式
以上代码中toString 方法,每次 new 一个对象都需要重新创建一个,而这个方法却是每一个 Employee 共有的,所以能不能把这个方法提取到一个公共的地方捏?如果我们系统中有多个员工,创建每一个员工都需要 new 一下,出现很多重复代码,所以我们可以将他们写成一个构造函数,然后通过传入的不同参数创建不同的员工。此时就需要我们使用原型模式,将 toString 方法挂载到 Employee 的原型上。所以说,es6 类的写法同时兼顾了构造器模式和原型模式。toString 直接被挂载到原型上!原创 2024-08-18 11:00:01 · 581 阅读 · 0 评论