一、动机
1、 在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象面临着剧烈的变化,但是它们却拥有比较稳定的接口;
2、如何应对这种变化,如何提供一种“封装”机制隔离出“这个易变对象的变化”,从而保持系统中其他“依赖此对象的对象”不随着需求的变化而变化;
二、代码
AbstractCar.cs:





















CarFactory.cs:













HongQiCar.cs:




































HongQiCarFactory.cs:



















CarTestFramework.cs:





























App.cs:



















三、代码分析
这里我主要强调的是工厂方法模式主要是面临着“某个对象”变化时适用。
也许大家会觉得抽象工厂模式、生成器模式与工厂方法模式非常相似,下面谈谈它们的不同之处:
抽象工厂模式解决的是“系列对象”的需求变化;生成器模式解决的是“对象部分”的需求变化;工厂方法模式解决的是“单个对象”的需求变化。
任何模式都有一个变化和不变的地方,应用模式就是要封装变化点,下面我列出这三种模式变化与不变的地方:
抽象工厂模式 | 生成器模式 | 工厂方法模式 | |
不变点 | 接口 | 整体接口(如房屋) | 接口 |
变化点 | 系列对象 | 对象部分(如门、窗等) | 单个对象 |