草庐IT

design-pattern

全部标签

c# - 既然 .NET 有一个垃圾收集器,为什么我们需要终结器/析构器/dispose-pattern?

如果我理解正确,.net运行时将始终在我之后清理。因此,如果我创建新对象并停止在代码中引用它们,运行时将清理这些对象并释放它们占用的内存。既然是这种情况,为什么有些对象需要有析构函数或处置方法呢?当它们不再被引用时,运行时不会在它们之后清理吗? 最佳答案 需要终结器来保证将稀缺资源释放回系统,如文件句柄、套接字、内核对象等。由于终结器总是在对象生命周期结束时运行,因此它是释放这些句柄的指定位置。Dispose模式用于提供资源的确定性销毁。由于.net运行时垃圾收集器是非确定性的(这意味着您永远无法确定运行时何时会收集旧对象并调用它们

java - Handcode GUI 或使用 gui-designer 工具

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭8年前。Improvethisquestion我想听听一些关于手动编写GUI的意见,就像在使用Java或Qt和C++时通常所做的那样,而不是使用gui-designer工具?GUI设计器工具的示例包括MFCGUI设计器、Qt设计器、InterfaceBuilder(Apple)。我曾经是手工编码的粉丝,但根据最近的经验,我已经改变了。我在手工编码中看到的问题是编写GUI相当快速和灵活,但是一旦您需要对很久以前编写的GUI进行更改,这可

c++ - 库方便使用 "design by contract"原理

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion是否有任何库可以帮助在C++应用程序中实现按契约原则设计?特别是,我正在寻找一个可以使用该原理的库,例如this. 最佳答案 我遵循了以下文章的教义:Anexceptionorabug?(米罗Samek,C/C++用户杂志,2003年)对契约(Contract)设计的简单支持在C++中(PedroGue

抽象工厂模式(Abstract Factory Pattern)

回顾工厂方法设计模式的不足:具体产品增加时,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度模式动机产品等级结构:产品等级结构即产品的继承结构,即抽象产品与具体产品产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品模式定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。模式结构模式优点隔离了具体类的生成,使得客户端并不需要知道什么被创建当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象增加新的产品族很方便,无须修改已有系统,符合开闭原则模式

design-patterns - 将公共(public)变量传递到 Node.js 中的单独模块的最佳方法是什么?

我使用单独的路由器文件作为主应用程序和身份验证应用程序的模块。我无法获得将变量(数据库客户端)传递到路由器的最佳方法。我不想硬编码或传递它:module.exports=function(app,db){也许使用单例寄存器或使用全局db变量是最好的方法?您对设计模式有何经验?哪种方式最好,为什么? 最佳答案 我发现使用依赖注入(inject)来传递东西是最好的风格。它确实看起来像你有的东西://App.jsmodule.exports=functionApp(){};//Database.jsmodule.exports=funct

【界面】使用QT designer、python搭建界面程序

文章目录前言1.预安装的软件与库2.QtDesigner的界面设计3.Qt逻辑编写4.封装成可执行文件5.总结前言PyQt是Python语言的GUI编程解决方案之一,是类似于Tkinter的一个高级库。为了更好的辅助PyQt界面的搭建,可以通过QtDesigner完成GUI界面设计。使用QtDesigner可以通过拖拽、点击完成GUI界面设计,并且设计完成后生成的.ui程序可以通过pyuic5命令直接转换成.py文件以供python程序调用。搭建完界面并写好逻辑后,还可通过pyinstaller将.py文件封装成.exe文件,以供没有python解释器的用户使用。本文以搭建标注工具界面程序为例

python - 类参数过多 : better design strategy?

我正在研究神经元模型。我正在设计的一类是细胞类,它是对神经元(几个连接在一起的隔间)的拓扑描述。它有许多参数,但它们都是相关的,例如:轴突节数、顶端fork、体细胞长度、体细胞直径、顶端长度、分枝随机性、分枝长度等等……一共大约15个参数!我可以将所有这些设置为一些默认值,但我的类看起来很疯狂,有几行参数。这种事情也一定会偶尔发生在其他人身上,有没有更好的设计方法或者我做对了?更新:正如你们中的一些人所问的那样,我附上了我的类代码,你可以看到这个类有大量的参数(>15),但它们都被使用并且是定义单元拓扑所必需的。问题本质上是他们创建的物理对象非常复杂。我附上了这个类产生的对象的图像表示

python的re : return True if string contains regex pattern

我有一个这样的正则表达式:regexp=u'ba[r|z|d]'如果单词包含bar、baz或bad,则函数必须返回True。简而言之,我需要Python的正则表达式模拟'any-string'in'text'我怎样才能意识到这一点?谢谢! 最佳答案 importreword='fubar'regexp=re.compile(r'ba[rzd]')ifregexp.search(word):print('matched') 关于python的re:returnTrueifstringcon

python - 类型错误 : can't use a string pattern on a bytes-like object in re. findall()

我正在尝试学习如何从页面中自动获取网址。在以下代码中,我试图获取网页的标题:importurllib.requestimportreurl="http://www.google.com"regex=r'(,+?)'pattern=re.compile(regex)withurllib.request.urlopen(url)asresponse:html=response.read()title=re.findall(pattern,html)print(title)我收到了这个意外错误:Traceback(mostrecentcalllast):File"path\to\file\C

java - ruby 和鸭子打字: design by contract impossible?

Java中的方法签名:publicListgetFilesIn(Listdirectories)ruby中类似的一个defget_files_in(directories)在Java的情况下,类型系统为我提供了有关方法期望和交付的信息。就Ruby而言,我不知道我应该传递什么,或者我期望收到什么。在Java中,对象必须正式实现接口(interface)。在Ruby中,传入的对象必须响应此处定义的方法中调用的任何方法。这似乎很有问题:即使拥有100%准确的最新文档,Ruby代码也必须从本质上公开其实现,从而打破封装。抛开“OO纯度”不谈,这似乎是一场维护噩梦。Ruby代码没有提示我返回了什