在五大设计原则的基础上经过GOF(四人组)的总结,得出了23种经典设计模式,其中分为三大类:创建型(5种)、结构型(7种)、行为型(11种)。今天对创建型中的工厂方法(FactoryMethod)模式的思想进行了一下复习和实践,在此也做一下记录。同样,理解或实践不到位的地方,希望走过路过的看官指正一下!
同样先来看看工厂方法(FactoryMethod)模式的定义:
Define an interface for creating an object, but let subclasses decide which class to instantiate.
意思就是说:定义一个用于创建对象的接口,但让子类决定要实例化哪个类。
也就是工厂方法(FactoryMethod)模式允许将产品类的实例化推迟到具体的创建者子类,由创建者子类决定实例化哪一个产品类。我们同样以汽车的生产作为讲解该模式的例子,因为汽车生产从宏观上来说也是特别符合这个模式的。我要一辆汽车,什么品牌的我没有要求,符合是汽车这个标准就行了。那么世面上不同的汽车生产商就会用自己的生产流程生产出符合汽车这个标准的不同品牌汽车。同样,我们也撸起袖子码一码!因为该模式没有强调待生产的产品类是复杂的,同样也为了减少大家的代码阅读,这次我们把汽车相关类定义的更简单一点!
由于是让子类决定要实例化哪个产品类,那么高层的类肯定是不需要知道有哪些具体产品类的,也就是得为众多具体的产品类制定一个产品标准(可以是接口,也可以是抽象类),这里我们定义一个汽车接口——ICar,它只有一个启动方法:
/// <summary> /// 汽车接口 /// </summary> public interface ICar { /// <summary> /// 启动汽车 /// </summary> /// <returns>是否启动成功</returns> bool Start(); }