
设计方法
文章平均质量分 62
workflower
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ABSTRACT FACTORY(抽象工厂)—对象创建型模式
例如, M o t i f Wi d g e t F a c t o r y的C r e a te S c r o l l B a r操作实例化并返回一个M o t i f滚动条,而相应的P M Wi d g e t F a c t o r y操作返回一个Presentation Manager的滚动条。一个M o t i f的滚动条应该与M o t i f按钮、M o t i f正文编辑器一起使用,这一约束条件作为使用M o t i f Wi d g e t F a c t o r y的结果被自动加上。原创 2025-03-13 07:41:55 · 488 阅读 · 0 评论 -
UML行为状态机和协议状态机behavioral statemachines and protocol state machines.
包含状态(State)、转换(Transition)、动作(Action)、守卫条件(Guard)。包含协议状态(Protocol State)、协议转换(Protocol Transition)。使用前置条件(Precondition)和后置条件(Postcondition)约束操作。:明确状态转换时的具体动作(如启动电机、播放声音)。示例:订单处理(“已支付”状态执行扣款逻辑)。(What),如操作合法性、协议顺序。(How),如执行动作、处理事件。,执行动作“加载文件内容”。,执行动作“启动电机”。原创 2025-03-06 09:13:05 · 532 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(12)
一旦这个初始程序在数据库中找到一个新的命令时,它就执行这个命令,然后把这个命令的执行结果写入到通话I D的输出列表中。因此,只要管理用户获得I R C处理程序状态,就可以通过从通道中切断所有的用户来获得任何地方的通道处理程序状态。这不算是一个非常好的方法,但比修改I R C服务代码以使I R C处理程序具有与通道处理程序相同的权限更有效,也更通用。或者是一个外部的工具或者是聊天的源代码检查是否允许用户“说话”和做一些事情,基于这些推断,决定是否允许他或者她的信息插入到数据库中。一般的用户都可以进行管理。原创 2025-03-01 01:00:00 · 1661 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(11)
这些插件改变信息的输出, h t m l s p e c i a l c h a r s把对h t m l s p e c i a l c h a r s()的调用应用到所有打印的文本(这是出于安全方面的考虑,没有人可以把有害的H T M L代码插入到这个聊天程序中)和侦测所有U R L地址和电子邮件地址的连接转换器中去,并且分别使用<a href = “ ”> < / a >或m a i l t o :预定义它们。紧接的是,创建一个羽翼丰满的分析程序的方法,其复杂性是难以言尽的。又期望它怎样工作呢?原创 2025-03-01 01:00:00 · 1262 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(10)
现在我们把带有数据交换的所有棘手的部分明朗化,事实上提供给用户的H T M L接口是非常小的。典型的接口是由这些组成的:用户输入区域、聊天输出区域、一个显示在其他的参与同一个聊天室人的昵称名清单(或者只是一个标记清单)和动作按钮,动作按钮允许聊天时单击一次就能实现一个动作,例如更改昵称、加入、离开、退出等等。这些动作可以都用单独一个进程来处理,这个进程的输出将被集成到一个框架设置中。负责聊天输出流的主进程在数据库中将保持状态信息的更新,使所有的其他接口组件都可以用合适的方式存入、取出和显示。原创 2025-02-28 01:00:00 · 182 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(9)
然而,许多能够访问装备有P H P服务器的人没有重新编辑P H P的权限,因为他们只是能够使用服务器的空间,所以还没有足够的权限,或者另外可能的原因是P H P的某种特定设置。通过这一点,每一个聊天进程在共享存储器中寻找自己的变量,无论什么时候它找到用户输入区域设置的变量,它就指定一个数据库的查询。当创建一个为广泛传播而设计的应用程序时,要时时提醒自己并非每个人都有和你相同的设置—可能也没有重新创建你的非常特殊设置的可能性。虽然P H P 9 9 %是不依赖于系统的,但是仍然有一些是依赖于系统的。原创 2025-02-28 01:00:00 · 263 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(8)
就算是这能作为数据库系统的基准(它应该能够处理更多的查询),一些优化选择很显然也是必要的,况且这非最佳设置。我们的下一个想法就是当处理内部过程信息交换的时候,如果数据库占用了太多的内存,一个文件系统可能还需要更加有效率的工作。然而这个选择也有缺点:信号量倾向于锁定资源,创建某种类型的有时序安排的机制,允许许多进程等待某个装置上可利用的时间,或者相似的东西。换句话说,我们现在用一个大型的为复杂数据的存储而设计的软件系统去交换简单的布尔值—如果说数据库的设计中还有没有涉及到的东西的话,那就是布尔值。原创 2025-02-27 01:00:00 · 414 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(7)
既然主进程是基于事件的,我们要不断的获取应用程序的控制权,做我们希望做的事情。p h p I R C具有空闲的回调特性,这个特性是在p h p I R C没有事情可做的时候才调用的,它仅仅是在等待网络传来消息。我们的情况就是需要能连接一个运行的进程和另一个短程进程的接口。而且它还会造成数据丢失,因为在退出和再登录的这段时间中,可能有许多信息已被传送了(这对于刚登录的用户来说是看不见的)。因此,我们至少需要两个独立的进程:一个处理不允许干扰的I R C信息交流,另一个从用户那里接收输入信息。原创 2025-02-27 01:00:00 · 354 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(6)
如果一个聊天服务器在同一时间被许多用户访问,耗掉所有的物理内存并开始使用映像内存,这时操作系统必须不断的在部分物理内存和映像内存之间交换数据(因为程序不能在映像内存中执行),这就造成了一个死循环:操作系统通知在映像内存中的一个进程需要运行,并把它加载到物理内存中,但是又要把另外一个运行着的进程从物理内存中放到映像内存中。当然,也有多成分文档和自动刷新,但是这些选项在网页再次加载时都引入一个非常令人讨厌的跳动,它需要一个输出的数据库缓冲区,而且由于不断的从服务器传来的重新连接和数据而造成了延迟。原创 2025-02-26 01:00:00 · 457 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(5)
在设置的过程中,这个应用程序不得不为每一个要处理的事件(例如:输入的私有信息、输入的服务器信息等等)注册一个回调动作。这些函数可以依次进入p h p I R C中的另外一个空闲循环中,以等待另一次事件的发生,或者它们可以使用p h p I R C的应用程序接口在网络上执行某种特定的功能(发送私有信息、加入/离开通道等等)。这个非常基本的布局允许下游的信息交流,这意味着p h p I R C能够接收来自于其他用户的信息。p h p I R C构成I R C用户端的部分应用程序,它还负责所有的网络信息交流。原创 2025-02-26 01:00:00 · 490 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(4)
只要有一个事件被发送过来,所有的要处理要刚才发生的这个事件的过程就被调用,调用时使用这个事件指定的参数(例如:输入的网络信息流的打包数据)。另一方面,如果外来的产品不能够改善自身或者不能跟得上时代,你自己受制于外来的产品已经被证实是非常消极的,就像项目中有BUG一样是不正确的。代码开放的产品的改进和扩展速度非常快,通常面向于通用的和开放的很有潜力的标准。• 程序的任何部分都可以引发任何种类的事件,因而加强了在这个应用程序中对任何类型的事件的处理能力(换一句话说,你可以从你的代码的任何部分来控制其他部分)。原创 2025-02-25 01:00:00 · 527 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(3)
这是我们实际上介绍给大家的东西,但这并不是要大家去做,因为这些是不必要的,现在各个系统已经有了许多很好的服务器软件。那么怎样使用现有的服务器?因此,我们要做的唯一事情就是去编写这个客户端的软件,另外,在我们的互联网服务中客户端也需要这个软件。I R C知道所有设置一个完美的聊天程序所必需的命令,这个网络问题可以通过使用标准的服务软件来解决,这些软件就像架上的书一样唾手可得。既然这个聊天程序只是通过H T T P与它的用户交流(没有被过滤),那么只有这个聊天服务程序本身需要一个到I R C服务器的开放连接。原创 2025-02-25 01:00:00 · 469 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(2)
如果一个服务器的连接超过它的剩余容量,它可以采用比其他服务器多的叶结构(连接许多叶节点到只有一个小的中枢服务器上是没有意义的)。但是如果波兰自己没有海外连接的话,从法兰克福到波兰的这个路径的连接就需要找到其他的出口到达大洋彼岸—它可以绕到其他国家(甚至是两个,三个或者更多的国家)直到它找到一个自由的海外连接为止。I R C的R F C和互联网上所有开放的标准相似, I R C协议的基础是在一个R F C(Request For C o m m e n t s)中指定的。• 允许I R C的用户连接。原创 2025-02-24 01:00:00 · 1688 阅读 · 0 评论 -
PHP应用程序设计:一个实际的例子(1)
虽然I R C要求在每一个参与聊天的用户系统上安装特殊的用户软件,但是我们可以利用这种要求,使其转化为我们软件的优势:我们为什么不在服务器端提供一个用户软件,然后使用一个H T M L接口把它抽象化,并且允许每一个用户通过H T M L的客户端获得这些软件呢?在网络使用的颠峰时刻,如果服务器A加载时出现了问题,或者出现了未知的事件,仅仅只需连接到服务器B上,动态地建立一个服务器连接,然后进入现有的聊天室(I R C允许你这样做,而且是全自动的)—现在你就可以给额外的用户提供另外一个拥有足够空间的服务器。原创 2025-02-24 01:00:00 · 1590 阅读 · 0 评论 -
总体大于部分之和-系统之美
当一个生物死去,使其成为一个有机系统的多种连接死去,使其成为一个有机系统的多种连接不再产生作用时,它就丧失了作为一个系统的存在状态,尽管它仍是一个更大的食物链系统中的组成部分。系统会产生各种变化,对各种事件做出反应,对各种错误或不足进行修补、改善和调整,以实现其目标,并生机勃勃地生存下去,尽管很多系统本身可能是由各种无生命的要素构成的。再如,一支足球队是一个系统,它的要素包括球员、教练、场地和足球等;因此,一个系统中可能包含很多子系统,而它也可以嵌入到其他更大的系统之中,成为那个更大的系统中的一个子系统。原创 2025-02-23 01:00:00 · 336 阅读 · 0 评论 -
need和requirement还不一样,看ISO怎么说的。
参见:原创 2025-02-22 14:26:09 · 967 阅读 · 0 评论 -
KEEPASS数据-软件需求
Data FlowData Flow。原创 2025-02-22 14:21:19 · 308 阅读 · 0 评论 -
大模型可以多大程度上代替人类做软件需求分析
运用混合智能框架HITL4SE(Human-in-the-Loop for SE),当检测到以下指标时触发人工介入: ① 需求模糊度指数≥0.67 ② 领域术语消歧失败 ③ NFR实施成本预测差异>35% 通过配置参数化审批阈值实现流程柔性控制。当前技术代际内,大模型可承担软件需求密集型工作中约55-68%的初级分析任务,但需求确认与价值权衡的本质仍属人类工程师的核心领域。当系统状态空间超过10^6(McCabe复杂度≈45)时,大模型生成代码的正确性下降曲线斜率骤增(DARPA 2024报告)原创 2025-02-21 11:09:32 · 548 阅读 · 0 评论 -
Prompt Engineering的重要性
实验表明,经过优化的Prompt可使LLM的需求理解准确率提升28-35%(参照NSF 2023需求工程基准测试),通过:约束生成空间、强制推理路径、格式规范化等机制,将用户的非结构化输入有效映射到结构化需求规格。当前工业界的最佳实践(如IBM的ReqPrompt框架)证明,系统化的Prompt Engineering可将需求分析周期缩短40%,同时需求变更率降低26%。实验数据显示,采用"假设您是系统架构师,请列举这个需求可能隐含的3个非功能性需求"的提示方式,隐性需求发现率是传统访谈的2.3倍。原创 2025-02-21 11:05:19 · 785 阅读 · 0 评论 -
各个行为设计模式之间
例如,一个使用C o m p o s i t e模式的系统可以使用一个访问者对该复合的各成分进行一些操作。它也可以使用D e c o r a t e r对该复合的某些部分的这些属性进行改写。它可以使用O b s e r v e r模式将一个对象结构与另一个对象结构联系起来,可以使用S t a t e模式使得一个构件在状态改变时可以改变自身的行为。复合本身可以使用B u i l d e r中的方法创建,并且它可以被系统中的其他部分当作一个P r o t o t y p e。原创 2025-01-16 01:00:00 · 188 阅读 · 0 评论 -
各个行为设计模式之间
例如,一个使用C o m p o s i t e模式的系统可以使用一个访问者对该复合的各成分进行一些操作。它也可以使用D e c o r a t e r对该复合的某些部分的这些属性进行改写。它可以使用O b s e r v e r模式将一个对象结构与另一个对象结构联系起来,可以使用S t a t e模式使得一个构件在状态改变时可以改变自身的行为。复合本身可以使用B u i l d e r中的方法创建,并且它可以被系统中的其他部分当作一个P r o t o t y p e。原创 2025-01-16 01:00:00 · 295 阅读 · 0 评论 -
VISITOR(访问者)—对象行为型模式
(参见前面的类框图)。每一个结点在实现A c c e p t时将会回调访问者:一个赋值结点调用访问者的Vi s i t A s s i g n m e n t操作,而一个变量引用将调用Vi s i t Va r i a b l e R e f e r e n c e。以前类A s s i g n m e n t N o d e的Ty p e C h e c k操作现在成为Ty p e C h e c k i n g Vi s i t o r的Vi s i t A s s i g n m e n t操作。原创 2025-01-16 01:00:00 · 914 阅读 · 0 评论 -
TEMPLATE METHOD(模板方法)—类行为型模式
A p p l i c a t i o n的子类将定义检查一个文档是否能够被打开( C a n O p e n D o c u m e n t)和创建文档( D o C r e a t e D o c u m e n t)的具体算法步骤。一个电子表格应用定义S p r e a d s h e e t -A p p l i c a t i o n和S p r e a d s h e e t D o c u m e n t子类,如下页图所示。个D o c u m e n t对象表示。原创 2025-01-15 01:00:00 · 924 阅读 · 0 评论 -
STRATEGY(策略)—对象行为型模式
一旦C o m p o s i t i o n重新格式化的正文,它就将这个职责转发给它的C o m p o s i t o r对象。C o m p o s i t i o n的客户指定应该使用哪一种C o m p o s i t o r的方式是直接将它想要的C o m p o s i t o r装入C o m p o s i t i o n中。不是C o m p o s i t i o n 类实现的,而是由抽象的C o m p o s i t o r类的子类各自独立地实现的。政策(P o l i c y)原创 2025-01-15 01:00:00 · 445 阅读 · 0 评论 -
STATE(状态)—对象行为型模式
一个T C P C o n n e c t i o n对象的状态处于干不同状态之一: 连接已建立( E s t a b l i s h e d)、正在监听( L i s t e n i n g )、连接已关闭( C l o s e d )。T C P C o n n e c t i o n类维护一个表示T C P连接当前状态的状态对象(一个T C P S t a t e子类的实例)。T C P C o n n e c t i o n使用它的T C P S t a t e子类实例来执行特定于连接状态的操作。原创 2025-01-14 01:00:00 · 602 阅读 · 0 评论 -
OBSERVER(观察者)—对象行为型模式
一个表格对象和一个柱状图对象可使用不同的表示形式描述同一个应用数据对象的信息。这一模式中的关键对象是目标( s u b j e c t )和观察者( o b s e r v e r )。这一行为意味着表格对象和棒状图对象都依赖于数据对象, 因此数据对象的任何状态改变都应立即通知它们。同时也没有理由将依赖于该数据对象的对象的数目限定为两个, 对相同的数据可以有任意数目的不同用户界面。目标是通知的发布者。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。原创 2025-01-14 01:00:00 · 407 阅读 · 0 评论 -
MEMENTO(备忘录)—对象行为型模式
一个备忘录(m e m e n t o)是一个对象, 它存储另一个对象在某个瞬间的内部状态,而后者称为备忘录的原发器( o r i g i n a t o r )。2 ) C o n s t r a i n t S o l v e r创建并返回一个备忘录, 在这个例子中该备忘录是S o l v e r S t a t e类的一个实例。S o l v e r S t a t e备忘录包含一些描述C o n s t r a i n t S o l v e r的内部等式和变量当前状态的数据结构。原创 2025-01-13 01:00:00 · 388 阅读 · 0 评论 -
MEDIATOR(中介者)—对象行为型模式
不同的对话框会有不同的窗口组件间的依赖关系。例如, F o n t D i a l o g D i r e c t o r可作为一个对话框中的窗口组件间的中介者。F o n t D i a l o g D i r e c t o r对象知道对话框中的各窗口组件,并协调它们之间的交互。D i a l o g D i r e c t o r的子类将重定义C r e a t e Wi d g e t s以创建正确的窗口组件, 并重定义Wi d g e t C h a n g e d以处理其变化。原创 2025-01-13 01:00:00 · 1169 阅读 · 0 评论 -
ITERATOR(迭代器)—对象行为型模式
然后我们可以为每个不同的列表实现定义具体的I t e r a t o r子类。C u r r e n t I t e m操作返回表列中的当前元素, First操作初始化迭代器,使当前元素指向列表的第一个元素, Next操作将当前元素指针向前推进一步,指向下一个元素, 而I s D o n e检查是否已越过最后一个元素,也就是完成了这次遍历。一个聚合对象, 如列表(list), 应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构. 此外,针对不同的需要,可能要以不同的方式遍历这个列表。原创 2025-01-12 01:00:00 · 504 阅读 · 0 评论 -
设计模式-货币(Money)
把货币类存储到数据库中存在一些问题,一般方法使用嵌入值;原创 2024-09-15 07:37:37 · 355 阅读 · 0 评论 -
设计模式-值对象(Value Object)
一个如货币或日期范围这样的小而简单的对象,判定时并不根据标识ID。某些事务的判别不是基于其标识时,可以采用值对象;原创 2024-09-15 07:32:48 · 273 阅读 · 0 评论 -
设计模式-注册表(Registry)
其他对象可以通过注册对象找到公共的对象和服务。原创 2024-09-13 01:00:00 · 624 阅读 · 0 评论 -
设计模式-分离接口(Separated Interface)
在一个包中定义接口,而在另一个包中实现这个接口,两个包是分离的。原创 2024-09-13 01:00:00 · 460 阅读 · 0 评论 -
设计模式-层超类型(Layer Supertype)
某一类型充当一层中所有类型的超类型。原创 2024-09-12 09:59:28 · 366 阅读 · 0 评论 -
设计模式-映射器(Mapper)
在两个独立的对象之间建立通信的对象。原创 2024-09-11 07:33:35 · 540 阅读 · 0 评论 -
设计模式-数据库会话状态(Database Session state)
/三个参数是消息内容。//messageType是消息类型,args是消息内容。step1:创建入口,把领域消息格式转化为通用消息格式;把返回错误码转化成异常。step2:为了测试使用了消息入口的对象,首先创建一个服务桩,继承消息入口。step3:最后进行测试。原创 2024-09-11 07:30:23 · 280 阅读 · 0 评论 -
设计模式-入口(Gateway)
即使是纯粹的面向对象系统,通常也要处理一些不是对象的事务,例如关系数据库、CICS事务和XML数据结构。原创 2024-09-10 02:30:00 · 675 阅读 · 0 评论 -
设计模式-会话状态模式
服务器会话状态(Server Session State)原创 2024-09-09 02:00:00 · 535 阅读 · 0 评论 -
设计模式之状态模式(c++实现)
状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变其行为。换句话说,状态模式使得一个对象在其状态改变时能够表现出不同的行为。这种模式通常用于需要在运行时根据状态对行为进行不同处理的场景。状态模式的核心是将状态相关的行为封装到不同的状态类中,从而使得状态的改变变得更加灵活且易于维护。原创 2024-09-08 01:00:00 · 330 阅读 · 0 评论 -
Android架构组件:MVVM模式的实战应用与数据绑定技巧
MVVM(Model-View-ViewModel)是一种软件架构模式,广泛应用于现代应用程序中,特别是桌面和移动应用程序。MVVM模式有助于分离用户界面(UI)和业务逻辑,使得代码更清晰、更易于维护。在这里,我将详细介绍MVVM模式的实战应用以及数据绑定的技巧。原创 2024-09-07 01:00:00 · 505 阅读 · 0 评论