design-patterns相关内容

任何地方的固体原理示例?

我们都用一些模式编写代码,即使我们没有意识到.我试图真正理解一些 S.O.L.I.D 原则以及您如何在现实世界中应用这些原则. 我正在为“D"而苦苦挣扎. 我有时会将依赖倒置与依赖注入混淆.这是否意味着只要你保持依赖于抽象(IE:接口)你就完成了. 有没有人有一个解释它的 C# 小例子? 谢谢. 解决方案 查看 Mark Seeman 的博客,或者购买他的书更好.它 ..
发布时间:2021-12-22 09:02:36 C#/.NET

观察者模式的反面是什么?

据我所知,观察者模式允许多个观察者监视单个主题.是否有相反情况的模式?是否有一种模式可以让单个观察者监视多个主体并在其中任何一个引发通知事件时做出响应? 解决方案 观察者模式仍然可以使用:只需将相同的对象寄存器作为许多被监视对象的观察者即可.您可能希望“通知"事件接收某种观察对象标识符(“this"指针、唯一 ID 号等),以便观察者对象可以选择适合报告事件的对象的操作. ..
发布时间:2021-12-22 09:02:28 其他开发

WPF 的复合指南:MVVM 与 MVP

我很困惑.也许你可以帮助我:) 我一直在遵循 CAG 的指导,发现 MVP 模式对我来说非常自然.假设我有一个 UI 就绪模型(例如:实现 INotifyPropertyChanged),我使用演示者将此模型绑定到视图(演示者知道视图的接口),使我的代码隐藏尽可能小,仅处理绑定(模型和命令)属性(或方法)或没有 ICommand 的控件的事件,在这种情况下会立即委派给演示者. 一段时间 ..
发布时间:2021-12-22 09:02:12 其他开发

java如何在底层实现字符串的享元模式?

如果你有一个 String 的两个实例,并且它们是相等的,那么在 Java 中它们将共享相同的内存.这是如何在幕后实施的? 编辑:我的应用程序使用了大量 String 对象,其中许多是相同的.使用 Java String 常量池以避免创建自定义享元实现的最佳方法是什么? 解决方案 查看java.lang.String的源码(整个java api的源码是JDK的一部分). 总结: ..
发布时间:2021-12-22 09:02:03 Java开发

为什么大多数系统架构师坚持首先对接口进行编程?

我读过的几乎每本 Java 书籍都谈到使用接口作为在对象之间共享状态和行为的一种方式,这些对象在第一次“构造"时似乎没有共享关系. 然而,每当我看到架构师设计应用程序时,他们做的第一件事就是开始对接口进行编程.怎么来的?您如何知道将在该接口中出现的对象之间的所有关系?如果你已经知道这些关系,那为什么不直接扩展一个抽象类呢? 解决方案 对接口编程意味着尊重使用该接口创建的“契约".因此 ..
发布时间:2021-12-22 09:01:52 其他开发

是的.. 我知道.. 我是个傻瓜.. 那么什么是单身人士?

我已经尝试过几次以了解单例是什么.也许我太形象了..所以任何人都可以用一个简单的类比来分解它. 类似帖子: 初始化单例的不同方法 Singleton:应该如何使用 这是对单例模式的一个很好的使用吗? 单身有什么不好? Singleton:应该如何使用 单身人士:好的设计还是拐杖? .NET 中的全局 vs 单例 关于设计模式:何时使用单例? Java 中带参数的单例 ..
发布时间:2021-12-22 09:01:47 其他开发

使用装饰器自动注册类方法

我希望能够创建一个 python 装饰器,自动在全局存储库中“注册"类方法(具有一些属性). 示例代码: class my_class(object):@register(prop1,prop2)def my_method( arg1,arg2 ):# 方法代码在这里...@register(prop3,prop4)def my_other_method( arg1,arg2 ):# 方法 ..
发布时间:2021-12-22 09:01:36 Python

返回“NULL 引用"在 C++ 中?

在 JavaScript 或 PHP 等动态类型语言中,我经常执行以下功能: function getSomething(name) {if (content_[name]) 返回 content_[name];返回空;//不存在} 如果存在则返回一个对象,否则返回null. 在 C++ 中使用引用的等价物是什么?一般有什么推荐的模式吗?我看到一些框架具有用于此目的的 isNull() ..
发布时间:2021-12-22 09:01:28 C/C++开发

如何在 C 中创建单例?

在 C 中创建单例的最佳方法是什么?并发解决方案会很好. 我知道 C 不是您用于单身人士的第一种语言. 解决方案 首先,C 不适合 OO 编程.如果你这样做,你会一直战斗.其次,单例只是带有一些封装的静态变量.所以你可以使用静态全局变量.然而,全局变量通常有太多与之相关的弊端.否则,您可以使用函数局部静态变量,如下所示: int *SingletonInt() {静态 int 实 ..
发布时间:2021-12-22 09:01:02 其他开发

构建器模式和构造器的区别

构建器模式只是一种构建对象的方式,类似于构造器的作用,那么为什么要使用构建器模式而不是普通的旧构造器呢? 解决方案 我同意你的观点,Builder 实际上只是一个美化的构造器,而“构建器模式只是一种方式构建一个类似于构造函数的对象". 但是,这里有一些场景,其中构建对象的复杂性使得 Builder 的使用引人注目. 在一段时间内收集的对象依赖 在 Java 中,Strin ..
发布时间:2021-12-22 09:00:53 其他开发

Java 接口实现对

是否有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的界面,在 90% 的情况下,我想要的功能是相同的. 我的第一直觉是用静态方法创建一个具体的类.当我需要默认功能时,我会将功能委托给静态方法. 这是一个简单的例子: 界面 公共接口 StuffDoer{公共抽象无效 doStuff();} 方法的具体实现 公共类 ConcreteStuffDoer{公共静态无效 ..
发布时间:2021-12-22 09:00:47 Java开发

在 MVVM 中,是否每个 ViewModel 都只耦合到一个 Model?

在 MVVM 实现中,是否每个 ViewModel 只耦合到一个 Model? 我正在尝试在一个项目中实现 MVVM 模式,但我发现有时一个 View 可能需要来自多个 Models 的信息. 例如,对于UserProfileView,它的UserProfileViewModel可能需要来自UserAccountModel、UserProfileSettingsModel、的信息>Us ..
发布时间:2021-12-22 09:00:40 C#/.NET

实现“脏"标志功能的不同方法

几乎每个程序员一生都做过一次:如果变量的值发生变化,则设置一些标志.总是有很多属性,如果有什么变化,你想跟踪 在任何财产 在特定属性中 或某些属性集 我对针对上述情况实现“脏标志"功能的不同方式很感兴趣,除了在每次属性更改时更新标准对象范围的脏标志之外.肯定有比在每个 setter 中放置 "dirty = true" 更好的东西:它看起来很丑,而且是一项乏味的工作. 解决方 ..
发布时间:2021-12-22 09:00:27 其他开发

服务层和 ASP.NET MVC 2 的目的

为了理解 MVC 2 并尝试让我的公司采用它作为未来开发的可行平台,我最近阅读了大量书籍.在过去的几年里,我一直专门使用 ASP.NET,我有一些事情要做. 目前,我了解存储库模式、模型、控制器、数据注释等.但有一件事使我无法完全理解以开始研究参考应用程序. 第一个是服务层模式.我已经阅读了许多关于 Stack Overflow 的博客文章和问题,但我仍然不完全理解这种模式的目的.我在 ..
发布时间:2021-12-22 09:00:22 C#/.NET

为什么我会在装饰器上使用责任链?

我只是在阅读责任链模式,我当我更喜欢使用它而不是 decorator 时,很难想象一个场景. 你怎么看?CoR 有特殊用途吗? 解决方案 责任链模式与装饰者模式的不同之处在于,你可以在任何时候打破链条.装饰器可以被认为是一次执行,而不与其他装饰器进行任何交互.链中的链接可以被认为是一次执行一个,因为它们每个都依赖于前一个链接. 当您可以将程序概念化为由链接组成的链时,请使用责任 ..

管道设计模式实现

这是一个关于流水线实现的设计问题.以下是我的幼稚实现. 管道中各个步骤/阶段的接口: 公共接口 Step{公共 U 执行(T 输入);} 管道中步骤/阶段的具体实现: 公共类 StepOne 实现 Step{@覆盖公共整数执行(整数输入){返回输入 + 100;}}公共类 StepTwo 实现 Step{@覆盖公共整数执行(整数输入){返回输入 + 500;}}公共类 StepThre ..
发布时间:2021-12-22 09:00:00 Java开发

在 Python 中实现回调 - 传递对当前函数的可调用引用

我想在 Python 中为几个工人实现 Observable 模式,并且遇到了这个有用的片段: class 事件(对象):经过可观察类(对象):def __init__(self):self.callbacks = []定义订阅(自我,回调):self.callbacks.append(回调)定义火(自我,**属性):e = 事件()e.source = self对于 attrs.iterite ..

策略与桥接模式

我知道之前有人问过这个问题(例如,桥接模式和策略模式有什么区别?). 但是,有人可以用清晰的例子解释一下有什么区别以及在什么情况下必须选择一个而不是另一个吗?更少的概念理论,更实际的“现实生活"场景将不胜感激. 解决方案 桥接模式区分抽象和实现,使两者可以独立变化.我将使用 中的示例 Java 中的模式,第 1 卷:使用 UML 说明的可重用设计模式目录,第二版 您需要提供 ..
发布时间:2021-12-22 08:59:39 其他开发

理解适配器模式

我正在尝试了解适配器模式及其在现实世界中的使用.在浏览了 Internet 和 www.dofactory.com 上的各种文章后,我创建了此示例代码.我只是想知道我的理解是否正确.在下面的示例中,我在 Adapter 类中创建了 MSDAO 对象.后来改成了OracleDAO. class 客户端{静态无效主(字符串 [] args){ITarget objAdapter = new Adap ..
发布时间:2021-12-22 08:59:26 C#/.NET

java.io 中最常用的模式是什么?

我最近在求职面试时被问到这个问题,我无法回答.那么,java.io 中最常用的模式是什么,又是如何使用的呢?常见的 Java 库中使用的其他模式是什么? 解决方案 我猜他们想了解 装饰器模式,可以在各种流、读取器和写入器中找到. 其他模式(小选): Swing 库中的观察者模式 工厂模式在 javax.xml.parsers 包中 迭代器模式,用于集合 我很确定人们可 ..
发布时间:2021-12-22 08:59:20 Java开发