Tag: 解耦

如何处理时间耦合?

我因此而苦苦挣扎: 我的类有一些具有时间耦合的方法。 也就是说,必须首先调用MethodA ,以“初始化” MethodB需要正常工作的数据。 我通常通过将违规依赖项 作为参数传递给“MethodB”来显式化时间耦合,就像在这个片段中一样: private class SomeClass { private string field; private int count; public SomeClass() { MethodA(); MethodB(field); } private void MethodA() { field = “Something”; } private void MethodB(string str) { count = str.Length; } } 虽然它使事情明确,但我觉得我做错了。 我最终得到的方法根本就不使用字段(静态方法!),所以这个类开始变得不那么紧密了。 这是最好的方法吗? (通过传递参数失去凝聚力) 编辑:关于一些建议使用字段作为构造函数中的参数或使用构建器模式来避免无效状态的答案: 我不能这样做,因为在我的情况下我正在构建一个Parser 。 MethodA读取输入并根据它设置状态(从文件中读取字符),然后调用MethodB。 必须以正确的顺序调用它们。 这是真正的问题:应该在另一个之前调用一个。

如何解耦模式切换和命令

如何将模式(通常由枚举表示)与命令及其关系中的实现分离? 它们是一个很好的模式,用于描述模式开关(int,enum,string,…)与其命令调用之间的松散绑定吗? 我想通过配置添加模式,因此必须(动态)轻松扩展(无需编程)。 我已经知道命令模式(C#/ .Net中的ICommand)。 它可能是一个命令字典及其相关的模式编号,但是切换逻辑呢?

楼梯模式实施

我在“自适应代码通过C#”一书中遇到了“Stairway”模式描述,我真的不明白这是如何实现的: ( 来源 ) 所以我有客户端组装: using ServiceInterface; namespace Client { class Program { static void Main(string[] args) { // Have to create service implementation somehow // Where does ServiceFactory belong? ServiceFactory serviceFactory = new ServiceFactory(); IService service = serviceFactory.CreateService(); service.Do(); } } } 服务接口组件: namespace Service { public interface IService { void Do(); } } […]