当我阅读有关存储库的文档时,通常是以“只读”方式处理实体和集合。 从来没有例子存储库有像insertUser(User $user)或updateUser(User $user) 。 但是,在使用SOA时,服务不应该与实体pipe理器一起工作(是的,不是吗?),所以: 我的服务应该知道全局的EntityManager吗? 如果我的服务只知道使用的存储库(比方说,UserRepository和ArticleRepository) 从这两个问题,另一个问题,我的服务应该明确地persist()和flush()我的实体?
Scala等语言已经有最佳实践吗? 我已经find了function语言的devise模式,function性战略编程的devise模式 。 有OO语言的GoFdevise模式。 但是functionOO混合动力车有没有什么模式? 我所见过的就是这个清单。 什么是已知的?
有没有描述exception处理/error handlingdevise模式的资源(网页或书籍)? 关于如何编写干净的代码有很多文献,并且有很多涉及devise模式的书籍。 然而,我从来没有见过任何devise模式,涵盖了在哪里以及如何最好地处理错误,以及如何最好地将在低级函数中出现的错误提升到抽象级别的问题。
我正在阅读关于访问者模式,并且看起来像Double Dispatch一样。 两者有什么区别吗? 这两个术语是否意味着同样的事情。 参考: http : //www.vincehuston.org/dp/visitor.html
他们可以使用如下: FieldInfo field = fieldof(string.Empty); MethodInfo method1 = methodof(int.ToString); MethodInfo method2 = methodof(int.ToString(IFormatProvider)); fieldof可以被编译成IL: ldtoken <field> call FieldInfo.GetFieldFromHandle methodof可以被编译为IL: ldtoken <method> call MethodBase.GetMethodFromHandle 无论何时使用typeof运算符,都可以find完美的Find All References结果。 不幸的是,只要你去田野或方法,你最终会讨厌的黑客。 我认为你可以做到以下几点…或者你可以回头去找名字。 public static FieldInfo fieldof<T>(Expression<Func<T>> expression) { MemberExpression body = (MemberExpression)expression.Body; return (FieldInfo)body.Member; } public static MethodInfo methodof<T>(Expression<Func<T>> expression) { MethodCallExpression body = (MethodCallExpression)expression.Body; return body.Method; } public […]
如果我在devise一个炼油厂,我不会期望来自不同供应商的材料不会以微妙而重要的方式遵守公布的标准。 来自一个供应商的pipe道,阀门和其他部件可能会带有符合ANSI标准的法兰和壁厚,同样来自任何其他供应商的部件也是如此。 因此互操作性和系统安全性得到保证。 那么为什么常见的数据库对于他们所遵守的标准的哪些部分是如此挑剔,以及为什么没有100%符合标准的系统脱颖而出呢? 标准是否被打破,缺乏范围或难以devise? 得出这个结论; ANSI(或ISO)定义SQL标准的重点是什么? 编辑: 常用数据库之间的实现差异列表
我知道在Stack Overflow上已经广泛地讨论了normalis(z)。 我读过很多以前的讨论。 我还有一些额外的问题。 我正在使用至less有100个表的遗留系统。 数据库有一些不规范的结构,包含各种不同数据的表和其他问题。 我已经被赋予了改善它的任务。 我不能只是重新开始,但需要修改现有的架构。 在过去,我一直试图devise规范化的数据库。 现在的问题。 一位高级开发人员build议,在某些情况下,我们无法正常化: 1)具有时间数据。 例如,创build一个链接到产品的发票。 如果客户一年后要求提供此发票的复印件,我们必须能够生成原件的完整副本。 如果产品价格,名称或说明已更新,该怎么办? 这位资深人士build议将价格和其他产品信息复制到发票表中。 我想也许我们应该有另一个表,如productPrice有一个date字段,所以我们可以跟踪价格的变化随着时间的推移。 我想在产品描述和名称上需要同样的东西? 看起来很复杂。 你怎么看? 2)数据库是一个会计系统。 我对会计不是很熟悉。 目前一些汇总数据被导出并存储在数据库中。 例如,一年的总销售额。 我的高级助理指出,会计师喜欢检查的东西是正确的,通过比较这个价值与实际上从发票计算的数据,让他们有信心,应用程序是否正常工作。 他说,目前例如我们可以判断是否有人错误地删除了去年的发票,因为总数不会一样。 他还指出,在飞行中计算这些总数可能相当慢。 当然我说过,数据不应该重复,应该在需要的时候一直计算。 我build议我们可以使用SQL Reporting Services或其他解决scheme来生成这些报告并caching它们。 无论如何,他不相信。 对此有何评论? 非常感谢 :) 干杯 标记 编辑 感谢您的优秀回应。 可惜我只能标记一个作为答案,因为这里有很多好的build议。
GUI =graphics用户界面和UI =用户界面有什么区别?
目前,我正在将新的AppCompat库带到老设备的材料devise周围。 设置一个工具栏作为操作栏工作正常,但工具栏似乎没有做任何事情调用inflateMenu(int resId) 。 从文档,我认为这是取代getMenuInflater().inflate(int resId)从onCreateOptionsMenu调用。 如果我做后者,菜单项正确膨胀,并添加到工具栏,但inflateMenu似乎没有。 我错过了什么? 活动代码: Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.main); // this does nothing at all setSupportActionBar(toolbar); } // this works @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } 提前致谢!
我一直在阅读战略模式,并有一个问题。 我已经在下面实现了一个非常基本的控制台应用程序来解释我在问什么。 我已经读到,在实施战略模式时,“切换”语句是一个红旗。 然而,在这个例子中,我似乎无法摆脱开关语句的束缚。 我错过了什么吗? 我能够从铅笔删除逻辑,但我的主现在有一个switch语句。 我明白,我可以轻松地创build一个新的TriangleDrawer类,而不必打开铅笔类,这是很好的。 但是,我需要打开Main,以便知道将哪种types的IDrawer传递给铅笔 。 这只是如果我依靠用户input需要做什么? 如果没有switch语句的话,我很乐意看到它! class Program { public class Pencil { private IDraw drawer; public Pencil(IDraw iDrawer) { drawer = iDrawer; } public void Draw() { drawer.Draw(); } } public interface IDraw { void Draw(); } public class CircleDrawer : IDraw { public void Draw() { Console.Write("()\n"); } […]