什么是一些常见的,现实世界的例子使用Builder模式的?它给你带来了什么?为什么不使用工厂模式?
我在看代理模式,对我而言,它似乎很像装饰器,适配器和桥模式.我误会了什么吗?有什么不同?为什么我会使用Proxy模式而不是其他模式?你过去在现实世界的项目中如何使用它们?
这两种模式看起来都像是控制反转原理的实现.也就是说,一个对象不应该知道如何构造它的依赖关系.
依赖注入(DI)似乎使用构造函数或setter来"注入"它的依赖项.
使用构造函数注入的示例:
//Foo Needs an IBar
public class Foo
{
private IBar bar;
public Foo(IBar bar)
{
this.bar = bar;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
服务定位器似乎使用了一个"容器",它连接了它的依赖关系并给它foo吧.
使用服务定位器的示例:
//Foo Needs an IBar
public class Foo
{
private IBar bar;
public Foo()
{
this.bar = Container.Get<IBar>();
}
//...
}
Run Code Online (Sandbox Code Playgroud)
因为我们的依赖项只是对象本身,所以这些依赖项具有依赖项,它们具有更多依赖项,依此类推.因此,控制容器的反转(或DI容器)诞生了.示例:Castle Windsor,Ninject,Structure Map,Spring等)
但是,IOC/DI容器看起来完全相同像一个服务定位器.将它称为DI容器是一个坏名字?IOC/DI容器只是另一种服务定位器吗?当我们有很多依赖关系时,我们使用DI容器这一事实的细微差别是什么?
有没有人在现实世界的应用程序中使用Bridge Pattern?如果是这样,你是如何使用它的?是我,还是仅仅是适配器模式,在混合中引入了一点依赖注入?它真的值得拥有自己的模式吗?
如何使用存储库模式以事务方式封装多个实体的保存?例如,如果我想根据订单创建添加订单并更新客户状态,但只有在订单成功完成时才会这样做?请记住,对于此示例,订单不是客户内的集合.他们是自己的实体.
这只是一个人为的例子,所以我并不关心订单是否应该在客户对象内部,甚至不在同一个有限的上下文中.我真的不在乎将使用什么底层技术(nHibernate,EF,ADO.Net,Linq等).我只是想看看一些调用代码在这个公认的全有或全无操作示例中的样子.
design-patterns domain-driven-design architectural-patterns repository-pattern
我正在寻找一个使用C#4.0新的可选参数功能的库,但我希望将其定位到框架的3.5版本.这可能吗?
可选参数语法糖的方式与扩展方法相同吗?
每次我在这里播客或阅读关于它的博客文章,即使在这里,他们也会听起来像字符串理论或其他东西.用类固醇依赖注射来描述OOP的最佳方法是什么?
每当有人试图解释它时,就像Aspects,[花生卡通声音的成人],正交,[更多噪音],交叉问题等等.说真的,任何人都可以用外行的术语来形容它.
当使用Resharper时,出于某种原因,当我调用扩展方法时,它会自动将其转换为静态方法调用.这就是所谓的转换扩展方法到纯静态重构.
foo.Bar()
Run Code Online (Sandbox Code Playgroud)
变
MyStaticExtensions.Bar(foo);
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是,它将此标记为代码气味.我怎么关掉这个?
有没有人知道一个明确的指南或指南告诉我们WPF和Silverlight之间的差异.我知道Silverlight,例如,没有WPF所有的控件和所有命名空间.是否有一个来源告诉我Silverlight中缺少哪些控件和命名空间?
还有其他我不知道的东西,比如只允许使用基本的http绑定进行异步通信.此外,Silverlgiht没有开箱即用的所有类型转换器.
其他人对细微差别有所了解或知道解释它们的来源吗?
我想弄清楚所有这些是如何协同工作的.我知道DTO基本上只是一个数据容器,域对象可以来回传递给表单等.Domain对象是包含DTO还是DTO,而Domain Object恰好具有将手动映射的所有相同属性?
如果我在服务中公开我的DTO类型,如何在不为客户端上的每个获取/设置操作创建往返的情况下使用getter和setter?我知道你可以有一个很长的构造函数,但是如果你有超过7个属性,这会变得很难看.
实现存储库模式时,是否要传入DTO或域对象?
有没有人曾在WPF或Silverlight中创建自定义标记扩展?你什么时候想要或者需要这样做?关于如何做的任何提示或来源?
是否有任何人推荐的主题书籍?我在哪里学习ORM的关键概念和模式,因为它与NHibernate有关?