您的位置:首页 > 其它

(抽象)工厂的另一种实现方式

2010-08-19 17:51 253 查看
工厂模式是在设计模式中比较容易理解和掌握的一种模式,其使用非常的普遍。在项目实践中个人对常用的工厂模式做了一个调整,整个实现有点像工厂模式和抽象工厂模式的混合体,这样做的好处在于结合工厂模式的易用和抽象工厂的灵活。具体的实现可能如下:

代码

1 IUnityContainer container;
2 [Test]
3 public void CalculateTest()
4 {
5 Setup();
6
7 var factoryMock = new Mock<IServiceFactory>();//Mock Factory
8 var calcMock = new Mock<ICalculateService>();//Mock Service
9 calcMock.Setup(c => c.Sum(It.IsAny<int>(), It.IsAny<int>())).Returns<int, int>((x, y) => x + y); //Mock Calculate Sum Method
10 factoryMock.Setup(c => c.GetService<ICalculateService>()).Returns(calcMock.Object); //Mock GetService<T> Method
11
12 container.RegisterInstance<IServiceFactory>(factoryMock.Object);//向容器中注入Mock的Factory
13
14 var calc = ServiceFactory.GetService<ICalculateService>();
15
16 Assert.IsNotNull(calc);
17 int a = 1;
18 int b = 2;
19 int experct = a + b;
20 int actual = calc.Sum(a, b);
21 Assert.IsTrue(experct == actual);
22 }
23
24 public void Setup()
25 {
26 container = new UnityContainer();
27 Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.Current = new UnityServiceLocator(container);
28 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: