design-patterns相关内容
复合模式和装饰模式有什么区别? 解决方案 它们通常齐头并进.因为使用复合模式通常会导致也使用装饰器模式. 复合模式允许您以允许外部代码将整个结构视为单个实体的方式构建层次结构(例如元素树).因此,叶实体的接口与复合实体的实体完全相同.所以本质是复合结构中的所有元素都具有相同的界面,即使有些是叶节点,有些是整个结构.用户界面通常使用这种方法来实现轻松组合. http://en.w
..
在我看来,GOF 中描述的观察者设计模式与各种工具包中的侦听器实际上是同一回事.概念之间是否存在差异,或者监听器和观察器真的是一回事. (我不是在寻找任何特定的计算机语言实现,我只是想从设计的角度了解差异(如果有的话).是的,我知道关于 SOF 的类似问题有几个答案,但它们'植根于关于特定语言的特定问题——我正在寻找设计答案,而不是语言答案.) 解决方案 术语“侦听器"是否指的是观察
..
我了解基本的 JavaScript 伪类: function Foo(bar) {this._bar = 酒吧;}Foo.prototype.getBar = function() {返回 this._bar;};var foo = new Foo('bar');警报(foo.getBar());//'酒吧'警报(foo._bar);//'酒吧' 模块模式我也了解,可以模拟封装: var F
..
使用动态代理的用例是什么? 它们与字节码生成和反射有何关系? 有什么推荐的读物吗? 解决方案 我强烈推荐这个 资源. 首先,您必须了解代理模式的用例.请记住,代理的主要目的是控制对目标对象,而不是增强功能目标对象.访问控制包括同步、认证、远程访问(RPC)、延迟实例化(Hibernate、Mybatis)、AOP(事务). 与静态代理相比,动态代理生成的字节码需要在
..
可能的重复: 感叹号在函数前有什么作用? 我长期以来一直将以下代码用于 JavaScript 中的自执行匿名函数: (function () {/* 魔法发生 */})() 最近,我开始看到更多以下模式的实例(例如,在 引导程序): !function () {/* 大概发生了同样的魔法 */}() 有谁知道第二种模式的优点是什么?或者,这只是一种风格偏好? 解决方案 这两
..
我正在尝试设计一个异步框架,并想知道人们认为回调模式与观察者模式的优缺点. 回调模式://示例回调公共接口回调{公共无效通知(方法结果结果);}//示例方法公共类工人{public void doAsyncWork(回调回调){//做工作回调.通知(结果);}}//示例观察者模式公共接口事件监听器{公共无效通知(方法结果结果);}公共类工人{私人 EventListener 监听器;公共 reg
..
最近在 Ruby on Rails 社区中有各种各样关于 装饰器 和演示器的讨论. 两者的本质区别是什么?如果有,有什么线索可以告诉我使用哪一个而不是另一个?或者也许将两者结合使用? 解决方案 装饰器更像是“让我们向该实体添加一些功能".演示者更像是“让我们在模型/后端和视图之间架起一座桥梁".Presenter 模式有多种解释. 装饰器是通用的/通用的.演示者的职责/用途范围
..
我是设计模式的新手,我真的看不出这两种模式之间的区别,它们都是创建模式,不是吗?每个模式的目的是什么?谢谢. 解决方案 单例模式确保你总是返回相同的任何类型的实例,而工厂模式通常给你每种类型的不同实例. 单例的目的是让所有调用都经过同一个实例.一个例子可能是一个管理磁盘缓存的类,或者从静态字典中获取数据;在重要的地方,只有一个已知实例与资源交互.这确实降低了它的可扩展性. 工厂
..
我想知道在 流畅的界面中使用 方法链 在 .When 条件中实现 .When 条件的最佳方法是什么>Builder 对象? 例如,我将如何在以下示例中实现 .WithSkill() 和 .When() 方法: var level = 5;var ninja = NinjaBuilder.CreateNinja().Named("忍者男孩").AtLevel(级别).WithShuriken
..
我使用单独的路由器文件作为主应用程序和身份验证应用程序的模块.我无法获得将变量(db 客户端)传递到路由器的最佳方法.我不想对其进行硬编码或将其传递给: module.exports = function(app, db) { 也许最好的方法是使用单例寄存器或使用全局数据库变量? 您在设计模式方面有什么经验?哪种方式最好,为什么? 解决方案 我发现使用依赖注入是最好的风格.它确实
..
我目前进行了大量 WPF 开发,并已开始创建一些基本的 Android 应用程序.创建WPF应用的时候经常用MVVM,一般用Prism,想知道有没有Android平台MVVM的例子? 解决方案 我是Android-Binding的开发者一>.就像@Brentley 说的那样,这是一个非常新的项目,但我确实希望获得更多的关注和经验,以便对其进行改进.回到你的问题,我已经写了一些简单的介绍/教
..
jQuery 高度关注 DOM,并围绕它提供了很好的抽象.在这样做时,它利用了昨天刚打到我的各种众所周知的设计模式.一个明显的例子是 Decorator 模式.jQuery 对象围绕常规 DOM 对象提供新的和附加的功能. 例如,DOM 有一个原生的 insertBefore 方法,但没有对应的 insertAfter 方法.有各种实现可用来填充这个差距,而 jQuery 就是一个提供这种功
..
来自维基百科Reactor Pattern 文章: 反应器设计模式是一种事件处理模式,用于处理由一个或多个输入并发传递给服务处理程序的服务请求. 它列举了一些例子,例如nodejs、twisted、eventmachine 但据我了解,上面是流行的事件驱动框架,所以让它们也成为反应器模式框架? 如何区分这两者?或者它们是一样的? 解决方案 反应器模式比“事件驱动编程
..
有谁知道关于 shell 脚本(sh、bash 等)的最佳实践或设计模式的任何资源? 解决方案 我编写了相当复杂的 shell 脚本,我的第一个建议是“不要".原因是很容易犯一个小错误,阻碍你的脚本,甚至让它变得危险. 也就是说,我没有其他资源可以通过您,但我的个人经验.这是我通常做的,这有点矫枉过正,但往往是可靠的,虽然非常冗长. 调用 让你的脚本接受多头和空头选项.请
..
我正在寻找任何提供最佳实践、设计模式和使用 Python 的 SOLID 原则示例的资源. 解决方案 这些有一些重叠 中级和高级软件Python 中的木工 像 Pythonista 一样编写代码:惯用的 Python Python 习语和效率 美国 Google 开发者日 - Python 设计模式 另一个资源是 Python 食谱中的示例.很多人不遵循最佳实
..
在写这个问题之前,我阅读了以下参考资料: 工厂方法与抽象工厂 抽象工厂与工厂方法(范围) 抽象工厂、工厂方法、构建器 工厂、抽象工厂和工厂方法 抽象工厂模式和工厂方法的区别 我看到很多和我一样的人都难以“掌握"抽象工厂和工厂模式之间的具体区别.我不熟悉设计模式,我遇到了这个例子 http://www.oracle.com/technetwork/java/dataaccesso
..
我正在阅读模板设计模式.根据我目前的理解,当我们有一个算法,其中有一组定义的过程(方法)要按顺序完成时,可以使用模板设计模式.主要参与者是 1.抽象模板类提供了一个模板方法,定义了过程(方法)和执行顺序.通常这个方法是最终的,所以它的行为不会被修改.模板方法中提到的过程(方法)很少提供默认实现,其他依赖于扩展抽象模板类类型的具体类被保留为抽象. 2.扩展模板方法的具体类.如有必要,它们
..
伙计们,我有一个案例,需要子类需要先调用其父虚函数,然后再调用其覆盖虚函数. BaseClass::Draw(){}ChildClass::Draw(){BaseClass::Draw();//必须首先调用 BaseClass Draw.}GrandChildClass::Draw(){ChildClass::Draw();//必须首先调用 ChildClass Draw.} 我想对客户隐藏这
..
我有一个用其他对象调用的函数,当我的应用程序加载时,获取参数,该函数应该等待所有对象的调用,然后使用承诺模式执行,我可以确保所有对象都被加载,但我不不知道对象的数量,我不想为加载设置超时.我不谈论诸如jquery和需要算法的具体技术. 伪代码: 函数 loadWidget(id){list.push(id);//在这里我应该确保所有小部件都已加载} 在我调用的其他应用程序中 app
..
Java 的 String 内存池的实现是否遵循享元模式? 我之所以有这个疑问,是因为我看到 Intern 并没有涉及外在状态.在 GoF 中,我读到内在和外在状态之间应该有一个适当的平衡.但在实习生中,一切都是内在的. 或者我们应该说没有关于属性的严格规则,仅仅共享对象以减少内存就足以称其为享元. 请帮我理解. 解决方案 与实习无关,Java 字符串利用享元模式通过在字
..