
设计模式
文章平均质量分 70
严文文-Chris
这个作者很懒,什么都没留下…
展开
-
【MVC、MVP、MVVM关系和区别】
(如 React + Redux ≈ MVVM,Flutter 类似 MVP)。理解核心思想比严格区分更重要。)是软件设计中用于分离关注点的经典模式,主要包括。这些架构并非完全独立,原创 2025-03-31 09:44:33 · 758 阅读 · 0 评论 -
【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】
MVC(Model-View-Controller)模式诞生于20世纪70年代,由Trygve Reenskaug在施乐帕克研究中心(Xerox PARC)为Smalltalk语言设计,目的是解决图形用户界面(GUI)开发中代码混乱的问题。核心目标是将数据管理(Model)、界面展示(View)和用户交互逻辑(Controller)分离,提升代码的可维护性和复用性。原创 2025-03-31 09:33:21 · 457 阅读 · 0 评论 -
【双分派小结】
双分派(Double Dispatch)是一种面向对象编程中的设计模式,通常用于实现多态性,尤其是在涉及多个对象交互时。它的基本思想是通过两个不同的对象来确定方法调用,而不仅仅是依赖于一个对象。原创 2024-12-06 16:16:28 · 487 阅读 · 0 评论 -
【UML图】
类图是UML中最常用的结构图之一,主要用于描述系统的静态结构,展示系统中类的定义以及它们之间的关系(如继承、关联、依赖等)。类(Class):类名、属性、方法。关系关联(Association):表示类之间的逻辑连接,通常用直线表示。继承(Inheritance):表示一个类继承另一个类的属性和方法,用空心箭头表示。实现(Implementation):表示一个类实现某个接口,用虚线和空心箭头表示。依赖(Dependency):表示类之间的依赖关系,用带箭头的虚线表示。原创 2024-11-13 09:54:18 · 924 阅读 · 0 评论 -
【分派和双分派】
分派是指在运行时或编译时根据对象的类型选择适当的代码块(如方法或函数)执行。分派机制确保程序根据对象的实际类型调用正确的函数,实现多态的动态绑定。分派分为静态分派和动态分派静态分派(Static Dispatch):分派在编译阶段完成。编译器根据方法签名选择调用哪个方法,主要应用在方法重载中。静态分派不依赖对象的运行时类型,而是基于参数的静态类型。动态分派(Dynamic Dispatch):分派在运行时完成。根据对象的实际类型选择调用的具体方法,应用在方法重写中。原创 2024-10-26 15:04:10 · 680 阅读 · 0 评论 -
【设计模式-状态模式】
状态模式(State Pattern)是一种行为设计模式,它允许一个对象在内部状态改变时改变它的行为。换句话说,这种模式让对象在不同的状态下能够表现出不同的行为,而不需要修改对象的代码。状态模式通过将对象的行为与状态进行解耦,使得状态的变化变得更容易管理和扩展。原创 2024-10-23 10:00:52 · 1206 阅读 · 0 评论 -
【设计模式-迪米特法则】
迪米特法则(Law of Demeter,LoD),也称为最少知识原则(Principle of Least Knowledge),是一种面向对象编程中的设计原则。它的核心思想是:一个对象应当尽可能少地了解其他对象,即只与直接相关的对象通信,而不要过度依赖外部对象的内部细节。通过减少对象之间的耦合度,提升代码的可维护性、可扩展性以及模块化程度。迪米特法则的定义可以简单概括为:根据迪米特法则,一个对象的方法只能调用以下几类对象的方法:这个原则的目的是减少不同类之间的耦合,使得一个模块或类不需要过多地了解另一个原创 2024-10-20 20:51:45 · 1210 阅读 · 0 评论 -
【设计模式-原型】
原型模式使用一个现有的对象作为原型,创建新对象时,通过克隆该对象来生成新对象。这个模式提供了一个接口来复制已有对象,并允许客户端通过该接口请求复制对象。原创 2024-10-20 19:24:35 · 1008 阅读 · 0 评论 -
【代理模式使用场景】
是结构型设计模式,引入一个对象控制对另一个对象的访问。代理对象在客户端和目标对象之间起到中介的作用,它可以在不改变目标对象的情况下,为目标对象添加额外的功能或者控制对目标对象的访问。为一个位于不同地址空间的对象提供本地代表,隐藏网络通信的细节。首先确定远程对象提供的服务,定义一个接口,该接口描述了远程对象能够执行的方法。根据需要创建开销很大的对象,延迟对象的创建直到真正需要的时候。通过它来存放实例化需要很长时间、真实对象创建很耗费系统资源或者根本不存在的对象的引用。确定被代理对象的行为,定义一个接口。原创 2024-10-19 11:42:23 · 962 阅读 · 0 评论 -
【设计模式-策略】
*策略模式允许定义一系列可互换的算法或行为,并通过策略类的组合,动态地选择使用哪一个算法。**这种模式通常用于系统中有多种方法可以执行某一任务的场景,且希望可以在运行时决定采用哪一种方法。策略模式通过将不同的算法封装为独立的策略类,并通过上下文类在运行时动态选择具体的策略,提供了一种灵活扩展和复用的设计方法。它消除了大量的条件判断语句,并使得算法可以轻松扩展而无需修改现有代码。策略模式适用于需要灵活切换算法、避免复杂条件分支的场景,是一种非常实用的设计模式。原创 2024-10-17 15:38:56 · 944 阅读 · 0 评论 -
【设计模式-简单工厂】
简单工厂模式是实现对象创建的一种常见方式,能够将产品对象的创建集中到一个工厂类中,减少客户端的复杂性。虽然它易于理解和实现,但在产品种类较多时不容易扩展,因此适合用于简单场景。对于更复杂的场景,可能需要工厂方法模式或抽象工厂模式来增强灵活性和扩展性。原创 2024-10-17 15:15:01 · 1249 阅读 · 0 评论 -
【设计模式-模板】
通过这种方式,模板方法允许子类在不改变算法结构的情况下重新定义算法中的某些特定步骤。原创 2024-09-30 20:02:10 · 927 阅读 · 0 评论 -
【设计模式-解释模式】
它通过为每个语法规则定义一个类,使得可以将复杂的表达式逐步解析和求值。这种模式适用于需要解析和执行语法规则的场景。原创 2024-09-30 17:43:37 · 839 阅读 · 0 评论 -
【设计模式-职责链】
职责链模式是一种行为设计模式,**它通过将请求发送给链上的多个处理者来避免请求发送者与处理者之间的紧密耦合。每个处理者可以选择处理请求或将其传递给链中的下一个处理者。**这样,可以将处理请求的责任链式组织,从而实现更灵活的请求处理机制。原创 2024-09-30 16:40:56 · 831 阅读 · 0 评论 -
【设计模式-命令】
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,从而使您能够使用不同的请求、排队请求或记录请求,并支持可撤销的操作。该模式通过将请求与其执行分离,使得请求者和接收者之间的耦合度降低。原创 2024-09-29 19:43:02 · 852 阅读 · 0 评论 -
【设计模式-中介者模式】
中介者模式(Mediator Pattern)是一种行为设计模式,。中介者充当不同对象之间的协调者,使得对象之间的通信变得简单且集中。原创 2024-09-29 17:52:35 · 917 阅读 · 0 评论 -
【设计模式-迭代】
迭代器模式(Iterator Pattern)是一种行为型设计模式,。通过迭代器,客户端可以在不需要了解集合实现的细节的情况下遍历集合中的元素。原创 2024-09-25 11:03:25 · 588 阅读 · 0 评论 -
【设计模式-策略】
策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,将每个算法封装起来,并使它们可以互相替换。策略模式让算法独立于使用它的客户端而变化,使得算法的变化不会影响到使用它的客户端。原创 2024-09-25 10:04:21 · 714 阅读 · 0 评论 -
【设计模式-状态模式】
状态模式(State Pattern)是一种行为型设计模式,允许对象在其内部状态改变时改变其行为。该模式将状态的变化封装在状态对象中,从而使得对象的行为随着状态的变化而变化。原创 2024-09-25 09:21:52 · 470 阅读 · 0 评论 -
【设计模式-访问者模式】
访问者模式适合于需要在多个元素上执行不同操作,且希望保持代码清晰和可扩展的情况。原创 2024-09-24 11:11:27 · 1118 阅读 · 0 评论 -
【设计模式-备忘录】
在不破坏封装的前提下,捕获对象的内部状态,并在对象之外保存这个状态,以便日后能将对象恢复到原先保存的状态。备忘录模式的优点在于它在保持对象封装性、实现撤销功能、简化状态管理、降低耦合度的同时,支持系统的状态历史保存和事务处理回滚。它特别适用于需要保存和恢复对象状态的应用场景。原创 2024-09-21 17:39:11 · 1013 阅读 · 0 评论 -
行为型模式-命令模式
将一个 请求封装为一个 对象,可以使用不同的请求进行参数化;对请求排队或者记录请求日志以及 支持可撤销的操作。别名动作模式或事务模式在命令模式中,将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作模式或事务模式。命令模式包含四个角色:抽象命令类中声明了用于执行请求的execute()等方法,通过这些方法可以调用请求接收者的相关操作;原创 2023-11-08 16:53:35 · 617 阅读 · 0 评论 -
类之间关系
类之间的关系 1、种类:Generalization(泛化) ,Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(组合关系) 注意:聚合关系,组合关系属于关联关系,是特殊的关联关系 2、泛化表现为继承和实现关系(is a),具体形式是类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系 3、关联关系(ha...原创 2018-02-16 19:27:09 · 274 阅读 · 15 评论 -
二次见面,请多指教!
软件工程 What软件工程:是一门建立在系统化,规范化,数量化等工程原则和方法上的,关于软件卡发的各个阶段的定义,任务和作用的工程学科。主要包括两方面:软件开发技术和如软件项目管理。 How软件工程开发需要时间,官称:软件工程的生命周期分别是需求捕获、系统分析与设计、系统实现、测试与维护 建模 what系统分析与设计最重要的是什么?建原创 2017-08-01 16:16:15 · 338 阅读 · 18 评论 -
UML,似曾相识(一)
What UML是一种面向对象的建模语言什么是面向对象语言呢?面向对象语言就是支持面向对象的程序设计的语言,如:c++,java、objectpascal等。一切操作都以对象为基础,是由面向过程语言发展而来的。 现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。 UML组成由视图原创 2017-08-01 16:20:43 · 359 阅读 · 25 评论 -
软件开发环境
想做出一款好软件,前提是软件开发环境,他有各阶段分散工具和软件开发环境SED,SED的特点是紧密性,可适应性,可移植性。工具集和集成机制构成了SED,集成机智的可信是环境信息库。把SED分成四类:模型,结构,范围,开发阶段。结构有单体性,协同性,分散性,并发性等。范围主要是通用型和专用型。开发阶段包含前端开发,后端开发,软件维护,逆向工程等。原创 2016-11-29 18:41:48 · 948 阅读 · 32 评论 -
部署图
部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图。】】gram Elements)1.结点(Node) 结点是存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统 例子: processor 处理器 是任何具有处理功能的机器 eg:服务器 工作站 等原创 2017-03-26 23:41:39 · 888 阅读 · 28 评论 -
软件过程模型
软件过程模型主要有以下五种:瀑布模型,螺旋模型,喷泉模型,增量模型,基于四代技术模型 瀑布模型的优点:需求明确,有评审和文档控制,便于分工协作,适合整体开发。缺点:不适用于需求不清楚,变动大的项目,而且他察觉问题玩,次序固定。 螺旋模型的特点:细化螺旋周期,含有风险分析,强调判断,目标,重视软件质量,重视维护她的卡法划分为:制定计划,风险分析,实施原创 2016-12-01 11:00:50 · 1300 阅读 · 31 评论 -
系统开发生命周期
首先讲讲什么是系统开发生命周期,首先它是一个系统建立的过程,其次它是由系统分析员,软件工程师,程序员和用户共同建立的。此过程分六个部分,每部分环环相扣,联系紧密,所以实际进行软件开发项目时一定要耐心的做好每一步。第一:问题及规划她的作用是制定长期技术战略第二:需求分析主要解决该系统“做什么”的问题。这是用户和软件分析人员共同参与的阶段,此阶段一定要详细分析问题,弄清顾客的真正需原创 2016-11-27 17:06:48 · 3982 阅读 · 29 评论 -
Enterprise Architect学习笔记-EA中关系
Enterprise Architect中定义的关系主要有一下几种:●Associate(关联):类之间有关联,通常是作为变量存在;●Aggregate(聚合):类A包含类B或由类B组成;●Compose(组合):类A是由其他类组成;●Dependency(依赖):类A需要类B的协助,类B变化会影响类A,反过来不成立;●Generalize(泛化):一般到具体的关系;●Re原创 2018-01-14 20:40:12 · 2676 阅读 · 7 评论 -
用例视图
用例视图 What 是什么? 描述系统做什么 构成 角色(Actor)、用例(Use Case)、关系 辨别 角色:使用系统功能的外部用户或系统(角色间存在泛化关系) 用例:是对包括变量在内的一组动作序列的描述。(是角色想要系统做的事) 关系:泛化原创 2017-03-12 23:40:57 · 543 阅读 · 21 评论 -
软件设计基础
软件设计基础注重设计二字,这个阶段设计出符合需求的模型。 设计的种类主要包括体系结构,数据设计,接口设计,模块机设计。他们包含在概要设计和详细设计两个阶段里,概要设计会把需求转化为体系结构,然后设计出程序,数据库,文件和类。详细设计会长在结构和算法上更加精细。 这里要强调结构设计。每个结构都有不同的适用范围。比如仓库模型,主要存储共享资源。分布式结构和仓库模原创 2016-11-29 18:37:00 · 779 阅读 · 25 评论 -
模块间的耦合
模块间的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于1.模块间接口的复杂2.调用模块的方式3.通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则原创 2016-11-08 21:30:20 · 2377 阅读 · 16 评论 -
模块间的内聚
内聚性内聚性,又称块内联系,指模块之间的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。模块的内聚性和耦合性是两个相互对立且又密切相关的概念。原创 2016-11-08 21:31:31 · 1416 阅读 · 18 评论 -
软件开发方法
软件开发方法主要有四种:第一:结构化开发方法此方法应用的图形较多,比如数据流图,用于信息的变换和传递。控制流图,数据词典,判定树和判定表。 步骤:首先是系统分析,形成物理数据流图,然后推导逻辑数据流图,接着设计出逻辑系统以及人机接口界面。确定成本,分线后选择方案。建立需求规约。 这种方法适用于班花宁和事务型形结构 第二:面向数据结构此种方法首先确定信息原创 2016-12-01 10:35:59 · 502 阅读 · 25 评论 -
软件需求及分析
什么是需求?比如天冷,我想吃热乎的东西,这个热乎的东西就是需求,如果别人向我推销冰激凌,我肯定不买,所以如果我们不懂得分析需求,经营生意,那结果大多不好。既然需求这么好,那我们应该怎样获取呢?我首先想到的是问,不错,当我们到餐厅时,服务员会立马问我们想吃啥,这就是获取需求的方式之一。问的形式多种多样,比较传统的是面对面问,比较省事的采用问卷的形式,如果人员能聚集 起来就采用会议讨论的方式问,原原创 2016-11-27 17:10:02 · 409 阅读 · 29 评论 -
抽象工厂模式和工厂模式的区别
抽象工厂模式是工厂模式的进一步抽象他们的区别如下:工厂方法模式:1.一个抽象产品类,可以派生出多个具体产品类。2.一个抽象工厂类,可以派生出多个具体工厂类。3.每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:1.多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。2.一个抽象工厂类,可以派生出多个具体工厂类。3.每个具体工厂类原创 2017-09-30 19:49:59 · 1234 阅读 · 19 评论 -
装饰者模式问题
原创 2018-03-11 23:02:21 · 359 阅读 · 4 评论 -
Java中static
Static What Static 静态修饰符,static关键字的中文意思是静态的,该修饰符可以修饰成员变量,成员常量和成员方法。 Why(特点)静态会随着类的加载而加载,消失而消失,所以他的生命周期和类一样长 优先于对象存在,静态先存在,对象后存在 被所有实例对象共享 直接被类名调用 静态变量(类变量)和实例变量区别存放位置:类变量随着类的消失而消失,存在方法区中,实例变量随着对...原创 2018-02-28 21:58:02 · 413 阅读 · 75 评论 -
接口
What is interface?在JAVA中是一个抽象类型,是抽象方法的集合 Why use interface? Java编程领域中,接口可以为不同类顺利交互提供标准。 特点 接口中每一个方法是隐式抽象的,会被指定为public abstract 接口中可以含有变量,但是会被指定为public static final 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中...原创 2018-02-26 12:03:06 · 299 阅读 · 31 评论