软件设计

Dynamic\用户可扩展实体使用实体框架

我使用实体框架为一个相当简单的问题跟踪应用程序。 我想向用户提供通过添加其他属性来扩展“问题”实体的功能,例如: 数字字段 文本字段(简单或富文本) 不同的列表(multiple \ single select) 布尔属性 我想到了两种完成任务的方法: 可扩展数据库方法 这是方法只是想法,我不知道如何实现使用实体框架,所以我会非常像你的帮助 这是基本的概念: ..
发布时间:2017-05-16 18:54:02 软件设计

类的配对层次结构

有一种设计模式的结构是这样的。 B拥有对A的引用,并且还使用A进行一些工作,并且进一步地,层次结构B中的每个子类在层次结构A中的子类上继承以进行其工作。 它的代码看起来像 https://codereview.stackexchange.com/questions/ 12412 /两个相关层次的类 解决方案 这是一个并行继承层次结构, 有关 Ward's Wiki的讨论以及可能值得 ..
发布时间:2017-05-16 18:52:05 软件设计

这是Singleton模式的好用吗?

我做了很多“设计自己的____”应用程序。 我做的是使单个类保存用户选择的所有自定义。例如:当你选择你想要的东西,它会更新一个单一的getter / setter为绿色。然后当应用程序需要知道选择了什么颜色时,它会从相同的getter / setter获取信息。 我曾经这样做的方式是将信息存储在UI中(只是检查什么颜色是从下拉列表中选择)。 在阅读了关于MVC(我仍然不完全理解M ..
发布时间:2017-05-16 18:50:20 软件设计

这是一个常见的和/或命名的OOP模式?

我不知道我经常使用的这种模式是否常见,并有一个名称: 一个算法是一个类 其参数通过类 的构造函数传递,调用无参数运行方法触发器 通过调用getter方法获取结果 一个示例(在Python中为了简单起见): class MyAlgorithm: def __init __(self,input,param1, param2): self.param1 = param ..
发布时间:2017-05-16 18:49:55 软件设计

需要替代提供者模式

为了配置,我正在维护一个利用提供者模式的Web应用程序,如下所述。 http:/ /msdn.microsoft.com/en-us/library/ms972319.aspx http://msdn.microsoft.com/en-us/library/ms972370.aspx 一切都已经工作正常,但随着我们为应用程序添加功能,我们发现我们的提供商已经成为不属于一起的几个不 ..
发布时间:2017-05-16 18:49:42 软件设计

生活的游戏与门面设计模式

我应该为游戏生活问题提出解决方案。我决定通过门面设计模式实现。 生活的游戏是一个有趣的0玩家游戏,其中定义了宇宙,并以死亡和活着的细胞模式开始。那么这个宇宙的演变是通过反复应用一些规则来观察的。请查看维基链接的详细信息。 我创建了两个课程: 宇宙类。这个类保持了整个宇宙状态的标签。哪些细胞是“死的”,哪些细胞是“活的”。这是我的控制类。 细胞类:这个类将生命游戏的规则适用于 ..
发布时间:2017-05-16 18:47:11 软件设计

具有EF6 + DatabaseFirst的存储库模式

当前系统: 我正在开发一个多层次的项目,如下所示(in我正在学习并试图在EF数据库上实现具有UOW的Repo模式。 服务(Web API) 业务(C#类库) 存储库(Repo Pattern + UOW) ViewModels(由我的服务使用发送到我的UI层) 数据(实体) 数据库(SQL Server) 存储库: 通用存储库: public interf ..

客户端服务器命令具有可变延迟的设计模式

我正在编写一个客户端程序来控制一个服务器,从而控制一些大的硬件。服务器需要接收命令来初始化,启动,停止和控制硬件。 从客户端到服务器的连接是通过TCP或UDP套接字。每个命令都使用SCADA协议(例如Modbus或DNP3)封装在适当的消息中。 初始化阶段的一部分涉及将一系列命令从客户端发送到服务器。在某些情况下,命令之间必须有几秒钟的延迟,以防止同时初始化多个子系统。延迟的值取决于命 ..
发布时间:2017-05-16 18:46:45 软件设计

查询对象模式与LINQ

我正在忙于一个新的项目,正在我的存储库层。这将是我使用存储库模式的第二个项目。我一直在阅读Scott Millett的书籍专业ASP.NET设计模式在引用本书中的案例研究时,Scott在他的存储库界面中使用了查询对象模式。在我以前的项目中,我使用LINQ来实现这一目的,并且运行良好。 我的问题如下:使用查询对象的优缺点是什么?模式实现与您的存储库中使用LINQ 以下是两种方案,说明了两 ..
发布时间:2017-05-16 18:46:28 软件设计

TCL有一些功能指针的概念吗?

使用TCL,我想实现类似策略模式的功能。我想通过TCL功能打印输出的“策略”,所以我可以轻松地在打印到屏幕之间切换并打印到日志文件。在TCL中最好的方式是什么? 解决方案 TCL允许您将过程的名称存储在变量中,然后使用该变量调用过程;所以 proc A {x} { puts $ x } set strat A $ strat Hello 将调用pr ..
发布时间:2017-05-16 18:40:53 软件设计

OO设计:在设计对象时如何决定方法参数与实例变量之间的关系

我正在设计一个系统,在那里我得到一堆输入,这些输入被处理以产生一些持续的输出。 说我需要做一些验证请求,我应该如 选项1: 验证器validator = new Validator(); validator.validate(request); 或 选项2: p> 验证器验证器=新的验证器(请求); validator.validate ..
发布时间:2017-05-16 18:38:13 软件设计

我可以在这里申请Liskov替代原则

我有两个数据模型由以下类别表示: 1) ImagesSet - 拥有 2DImage的对象,每个 2DImage 有自己的位置(原点( 3DPoint ),x-,y-轴( 3DVector )和尺寸沿x和y轴(以像素为单位)),但相同的像素大小(例如mm),x轴和y轴之间的角度(90度) 对象具有以下方法(伪代码): AddImage(2DImage); RemoveImage ..
发布时间:2017-05-16 18:37:40 软件设计

有经验的程序员仍然使用流程图来确定操作顺序,还是在头脑中做?

这是否是一个合法的工具,还是一个拐点,我将最终成长为需要? 更新:按操作顺序我的意思是: 启动应用程序 阅读prefs 从prefs计算值 写入文件... 现在,当我无法可视化程序流程时,我会在方法级别以及应用级别中绘制图表。 解决方案 我一直使用流程图来绘制操作顺序。 如果你的意思是“操作顺序” “程序的整体数据流”的感觉,那么流程图是绝对必须的。有一些图表 ..
发布时间:2017-05-16 18:35:28 软件设计

游客选择如何穿越的游客模式

据了解,在访问者模式的典型规范中,被访问对象决定如何遍历,通常它们只支持一个遍历顺序。 (例如,参见此处或这里。) 是否有同样使用双重调度的名称,但访问者访问决定如何遍历对象层次结构?在我的应用程序中,非常异质的文件模型类型集合正在推动访问者,例如出口业务。不过,似乎很难说,各种处理器(访客)都应该遍历,比如说一个宽度一级的顺序。其中一些可能只关注模型的一个子集,或者可能需要以特定的排序来处 ..
发布时间:2017-05-16 18:35:16 软件设计

业务规则分为两类

我有一个具有以下业务规则的项目分配域 当新员工被分配到一个项目时,总支出应该不超过预算金额。 对于员工,总分配百分比不应超过100% 我创建了如下所示的实体,在 C#中创建。 QUESTION 分配逻辑分为两类 - Project和Employee... List 作为参数传递给Allocate方法,而不是添加为类的属性...是正确的方法,还是需 ..
发布时间:2017-05-16 18:34:32 软件设计

用于在域模型之间映射数据的模式

这是我最近一直需要做的一件常见的事情,我正在寻找任何常见的模式,使其更容易一些。 这一切都是我有一些数据模型,它们被建模以满足ORM,并且纯粹对对象进行CRUD操作。这些模型目前通过存储库/工厂(取决于它的C或RUD)是否暴露。 然后我有一个视图模型,这是一个更可读的,洒上UI的关注点,例如视图之间的验证和映射数据(这是一个ASP.MVC场景,但这种情况可以抽象到大多数情况)。 ..
发布时间:2017-05-16 18:33:40 软件设计

如果我稍后应用ado实体框架工作,推荐的数据访问层设计模式是什么?

我正在创建一个网站,并将Linq作为数据访问层使用,我愿意使网站能够同时处理linq到sql和ado实体框架,而不改变其他层面的许多事情:业务逻辑图层或UI图层, 实现此目标的建议模式是什么?你能简单地解释一下吗? 更新 下面的存储库模式将帮助我很多, 我检查了书呆子晚餐网站,并了解了,但我发现这个代码里面: public class DinnersControll ..

如何对进行计算和存储的类进行建模?

我必须开发一个财务应用程序的一部分,它接收两个属性并返回两个结果。在你认为它不是一个类,但是方法之前,我不得不说,我必须坚持:两个用户提供的参数和两个输出。让我们在这个模拟中说明如下: ---------------- | PetWash | | ---------------- | | petWeight | ..
发布时间:2017-05-16 18:31:04 软件设计