寻求关于构造c#dll的高级指导

时间:2011-01-06 06:08:40

标签: c# design-patterns

一个小项目为我提供了一个改善自己作为程序员的机会。我可以找到大量描述控制流构造和dotnet库的资源,但我没有得到的是如何整体构建代码。我没有通过任何结构化的编程课程,所以我想确保由于我的理解有限,我没有养成坏习惯。我以前做了很多程序编程和一些GUI工作。我已经找到了算法和方法。我需要一个关于如何设计这段代码的简短叙述。

具体来说,我想创建一个包含代码的DLL,用于将长格式化文本字符串解析为某种结构化数据。我已准备好必要的正则表达式配方来检索数据。大多数字段将是单个值,但可能是一对多关系。我应该有多少课,他们的角色是什么?实际解析发生在哪里以及我应该返回什么类型的对象?

我不知道如何继续,直到我知道我所描述的是什么样的模式。

2 个答案:

答案 0 :(得分:1)

首先想到3层的应用程序。首先是数据或持久层,这可以是数据库,xml文件或任何其他数据输入/输出。第二个是域或业务层,这是实际的逻辑和逻辑层。应用商业活动。最后是表示层,这可能是一个Windows应用程序,网站等。

首先决定是否要采用数据中心方法或以域为中心的方法。以数据为中心的方法是您的域图层类与您的数据结构紧密匹配,使持久性更容易,但您的表示层更复杂。以域为中心的方法是您的域层类更多地反映问题的逻辑实体,通常使表示更直接但数据持久性复杂。

尝试并尽可能地保持每个图层与其他图层分开。使用松耦合接口,需要在它们之间进行通信。例如,域层可以定义一组接口(或契约),准确定义它需要/期望从域层中获取的内容(例如,使用存储库模式和DTO模式的组合)。类似地,表示层应该确定一个合约,确切地说它需要/期望从域层中获得什么,MVVM模式的VM部分就是一个很好的例子。

域层通常充当数据和表示层之间的中介,在每个层表示业务数据的独特方式之间进行映射。表示层不应该知道数据层,反之亦然。

答案 1 :(得分:0)

如果您不确定如何构建对象,请查看 OOP SOLID Principles 这是基础知识的基础。

就个人而言,任何需要解析/多个参数的实例化,我更喜欢在工厂类中进行。通过这种方式更容易进行依赖注入。

老实说,如果你想渴望一个优秀的程序员,请准备好一次又一次地重写。这就是每个人都学习的原因:)。

你做什么,不要触摸静态方法。他们是邪恶的。