工厂方法模式缘起
耦合关系决定软件变化时的行为。
模块之间的紧耦合使用软件面对变化时,相关的模块都要随之更改。
而模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。
工厂方法模式得动机
在软件系统中经常面临“某个对象”的创建工作,由于需求的变化,这个对象(具体实现)经常面临着剧烈变化,它却有比较稳定的接口。
如何应对变化?有没有一种”封装机制“来隔离这种变化,从而保持系统中”其他依赖该对象的对象“,不随着需求的变化而变化呢?
工厂方法的用意
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使得一个类的实例化延迟到子类。
下面代码理解上面的结构图
public interface IProduct{ void ProductMethod(); } class Product:IProduct{ public void ProductMethod(){ Console.WriteLine("产品"); } } public interface IFactory{ IProduct CreateProduct(); } public class Factory :IFactory{ public IProduct CreateProduct(){ return new Product(); } } class Program{ static void Main(string[] args){ IFactory factory = new Factory(); IProduct product = factory.CreateProduct(); product.CreateProduct(); } }