美文网首页
工厂模式

工厂模式

作者: zhaoyubetter | 来源:发表于2016-10-26 07:51 被阅读18次

    简单工厂##

    简单工厂不是一个设计模式,是一种编程习惯,将创建具体对象的代码封装到一个类里头,如果有新类型添加,只需要修改简单工厂即可;
    解决的是如何去实例化一个合适的对象;

    客户端含一个工厂类,依赖,通过工厂来获取对象,这样客户端就避免了,实例化具体对象的操作过程了;

    简单工厂类图:.

    Paste_Image.png
    1. 工厂类:简单工厂类的核心,工厂类包含全部产品类的创建逻辑;
    2. 抽象产品:简单工厂创建所有对象的抽象基类;
    3. 具体产品:简单工厂类,创建的具体实例对象;

    工厂方法模式##

    将对象的创建方法(工厂方法),定义成抽象方法,这样对象的创建就交给子类了,实际使用对象时,我们面对的是抽象;
    工厂方法用来处理对象的创建,将对象的创建行为封装在子类中;

    工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪个。工厂方法让类把实例化退迟到子类

    工厂模式减少对具体类型的依赖;

    ** 工厂方法模式类图 **

    Paste_Image.png
    1. 创建者类:定义了一个抽象的创建抽象产品(Product)的工厂方法,让子类实现此方法来创建具体产品;
      ConcreteCreator1 与 ConcreteCreator2 为具体的工厂,专门用来创建产品;
    2. 产品类:抽象产品,与具体产品;工厂创建的产品,都在这里;
    3. 创建者类与产品类,都有抽象,与具体实现;它们2者的关系是平行的;

    ** 与简单工厂对比 **

    1. 工厂方法模式,是创建框架,让子类去决定如何实现实例化对象;
    2. 简单工厂是将对象的创建封装起来,但简单工厂,不具备工厂方法的弹性,她不能变更正在创建的产品;

    抽象工厂模式##

    通过抽象工厂所提供的接口,可以创建产品的家族,利用抽象工厂接口的规范,代码将从实际工厂解耦,以便在不同的上下文环境中,实现各式各样的工厂,来制造各种不同的产品;

    ** 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 **

    抽象工厂允许客户使用抽象的接口来创建一组相关的产品,客户不需要关心实际产出的具体产品是什么;这样客户就从具体的产品中被解耦了;

    ** 抽象工厂模式类图 **

    Paste_Image.png

    客户端中,只涉及到抽象工厂,运行时,将自动使用实际的工厂;

    抽象工厂与工厂方法对比

    1. 都是负责创建对象的,工厂方法,通过继承来创建对象,抽象工厂,通过组合创建对象;
    2. 抽象工厂用来创建一个产品家族,工厂方法创建单一的产品;
    3. 抽象工厂经常用工厂方法来实现具体工厂;

    相关文章

      网友评论

          本文标题:工厂模式

          本文链接:https://www.haomeiwen.com/subject/mdoluttx.html