30、面向对象设计模式之工厂方法模式概念的引入

工厂方法模式缘起

  耦合关系决定软件变化时的行为。

  模块之间的紧耦合使用软件面对变化时,相关的模块都要随之更改。

  而模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。

工厂方法模式得动机

  在软件系统中经常面临“某个对象”的创建工作,由于需求的变化,这个对象(具体实现)经常面临着剧烈变化它却有比较稳定的接口

  如何应对变化?有没有一种”封装机制“来隔离这种变化,从而保持系统中”其他依赖该对象的对象“,不随着需求的变化而变化呢?

工厂方法的用意

  定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使得一个类的实例化延迟到子类。 

下面代码理解上面的结构图

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();
    }
}
原文地址:https://www.cnblogs.com/sy-liu/p/13141883.html