设计模式系列-03-创建模式-工厂方法
2016-11-07 21:02
330 查看
设计模式系列-01-开篇
设计模式系列-02-创建模式-简单工厂
设计模式系列-03-创建模式-工厂方法
视屏爱好者点这里1.解决什么问题?
a,解决简单工厂的每增加一个产品都要去改工厂类,不符合开闭原则。不满足搞内聚低耦合的设计思想2.怎么使用
2.1 UML类图
场景: 拿DOTA举例子,天灾和近卫都有各自的英雄,那么咋生产的时候是从不同的工厂去生产。
现在有天灾和近卫的两个工厂分别生产不同的英雄。把原来的简单工厂进行职责的分离。保持类的单一职责。便于后期的扩展
2.2 这样做的好处
a,现在如果要生产天灾的英雄,那么我近卫的工厂是不用动的,解决了简单工厂的每次都需要去改动工厂b,前段的client只要改个对应的参数就可以
3. 核心的代码
IFactorypublic interface IFactory { IHero CrateHero(HeroEnun heroEnum); }
ScourgeFactory
public class ScourgeFactory : IFactory { public IHero CrateHero(HeroEnun heroEnum) { switch (heroEnum) { case HeroEnun.CK: return new CK(); case HeroEnun.SF: return new SF(); default: return null; } } }
SentinelFactory
public class SentinelFactory : IFactory { public IHero CrateHero(HeroEnun heroEnum) { switch (heroEnum) { case HeroEnun.Coco: return new Coco(); default: return null; } } }
Client
IFactory factory1 = new ScourgeFactory(); IHero hero1 = factory1.CrateHero(HeroEnun.SF); hero1.ShowMoveSpeed(); IFactory factory2 = new SentinelFactory(); IHero hero2 = factory2.CrateHero(HeroEnun.Coco); hero2.ShowMoveSpeed();
4.源码地址
https://git.oschina.net/yudaming/DesignPatterns/tree/master相关文章推荐
- GoF 23个经典的设计模式03--创建模式之工厂方法(未完代续)
- 研磨设计模式之工厂方法模式-5 ――跟着cc学设计系列
- java 设计模式-创建模式之工厂方法模式2
- iOS设计模式(03):工厂方法
- iOS设计模式(03):工厂方法
- 设计模式系列之二:工厂方法模式
- Android设计模式系列(8)--SDK源码之工厂方法模式
- 从FLC中学习的设计模式系列-创建型模式(3)-工厂方法
- JavaScript进阶系列03,通过硬编码、工厂模式、构造函数创建JavaScript对象
- 设计模式--创建模式--工厂方法
- Android设计模式系列(8)--SDK源码之工厂方法模式
- 研磨设计模式之工厂方法模式-3 ――跟着cc学设计系列
- 工厂方法——设计模式系列
- JAVA设计模式学习之----创建模式:工厂模式(工厂方法)
- java设计模式-创建模式之 简单工厂,工厂方法和抽象工厂的区别总结
- 设计模式系列四 工厂(工厂方法、抽象工厂)模式介绍
- java 设计模式-创建模式之工厂方法模式1
- 抽象工厂方法——设计模式系列
- 工厂方法——设计模式系列
- 设计模式初学者系列-工厂方法