类图
代码度量
假设代码:
如果需要生产比亚迪汽车,需要修改三处地方
" ICar car1 = SimpleCarFactory.CreateCar("生产比亚迪");
ICar car2 = SimpleCarFactory.CreateCar("生产比亚迪");
ICar car3 = SimpleCarFactory.CreateCar("生产比亚迪");"
//界面逻辑代码
//简单工厂模式
//生产3量宝马汽车
ICar car1 = SimpleCarFactory.CreateCar("生产宝马车");
ICar car2 = SimpleCarFactory.CreateCar("生产宝马车");
ICar car3 = SimpleCarFactory.CreateCar("生产宝马车");
car1.Introduce();
car2.Introduce();
car3.Introduce();
如果需要生产比亚迪起汽车,需要修改一处地方
“ICarFactory carFactory = new BYDFactory()”
//界面逻辑代码
//工厂模式
//生产3量宝马汽车
ICarFactory carFactory = new BMWFactory();
ICar car1 = carFactory.CreateCar();
ICar car2 = carFactory.CreateCar();
ICar car3 = carFactory.CreateCar();
car1.Introduce();
car2.Introduce();
car3.Introduce();
工厂模式优点:
1.降低了耦合性
2.相比简单工厂模式,添加新类不需要再修改工厂管理类,符合了开放--封闭原则
缺点:
1.把判断的逻辑放在了界面逻辑上,增加了客户端的复杂度。
2.每次添加新的产品类都比简单工厂模式需要更多的代码量