Unity的抽象工厂我有一个简单的抽象工厂实现:publicabstractclassICarFactory{publicabstractISportsCarCreateSportCar();公共抽象IFamilyCarCreateFamilyCar();}publicabstractclassISportsCar{publicabstractvoidAccelerate();}publicabstractclassIFamilyCar{publicabstractvoidAccelarete();}publicclassBMWFactory:ICarFactory{publicoverrideISportsCarCreateSportCar(){returnnewBMWi7();}}publicclassWolksvagenFactory:ICarFactory{publicoverrideISportsCarCreateSportCar(){returnnewWVGolfR();}publicoverrideIFamilyCarCreateFamilyCar(){returnnewWVGolf();加速(){Console.WriteLine(this.ToString()+“加速。”);}}publicclassBMW5:IFamilyCar{publicoverridevoidAccelarete(){Console.WriteLine(this.ToString()+"accelerated.");}}公开课WVGolfR:我SportsCar{publicoverridevoidAccelerate(){Console.WriteLine(this.ToString()+"accelerated.");}}publicclassWVGolf:IFamilyCar{publicoverridevoidAccelarete(){Console.WriteLine(this.ToString()+"accelerated.");}}客户端代码如下:classProgram{staticvoidMain(string[]args){ISportsCarsportsCar=GetFactory().CreateSportCar();运动车加速();}staticICarFactoryGetFactory(){stringuserLocation;userLocation="汉堡";//从用户设置中获取用户位置if(userLocation=="Hamburg"){returnnewBMWFactory();}else{returnnewWolksvagenFactory();使用Microsoft.Practices.Unity实现“GetFactory()”方法的作用?我花了很多时间来寻找这个问题,但我找不到任何有用的东西。您可以通过为每个位置注册一组特定工厂和一个默认工厂来实现命名注册:_container=newUnityContainer();//注册位置特定的工厂_container.RegisterType("Hamburg");...//注册默认工厂_container.RegisterType();然后,您可以使用以下代码解析工厂(使用IsRegistered检查该位置是否有特定工厂):staticICarFactoryGetFactory(){stringuserLocation;userLocation="汉堡";//从用户设置中获取用户位置//尝试获取位置的特定工厂if(_container.IsRegistered(userLocation)){return_container.Resolve(userLocation);}//如果没有找到,获取默认工厂return_container.Resolve();在这里可能看到小提琴。在unity容器中注册名字CarFactories_container.RegisterType("Hamburg");_container.RegisterType("沃尔夫斯堡");然后改变你的方法,使用unity容器返回一个工厂实例以上就是C#学习教程:Unity的抽象工厂分享如果对你有用,需要进一步了解C#学习教程,希望大家多多支持更多关注它——return_container.Resolve(userLocation);本文收集自网络,不代表立场。如涉及侵权,请点击权利联系管理会员删除。如需转载请注明出处:
