zoukankan      html  css  js  c++  java
  • 设计模式学习(二)简单工厂模式工厂模式抽象工厂模式

      简单工厂模式

    简单工厂模式根据提供给他的数据,返回几个可能类中的一个类的实例,通常它返回的类都有一个共同的父类和共同的方法,但每个方法的执行的任务不同。

    简单工厂能返回具有同样方法的类的实例,他们可以是不同的派生类的实例,也可以是实际上毫无关系仅仅是享用了相同接口的类,这些类实例中的方法必须是相同的,并且能够被交替使用。

    工厂模式

    工厂方法模式对简单工厂模式进行巧妙的扩展,它不是一个专门的类来决定实例化哪一个子类。相反,超类把这种决定延迟到每个子类,这种模式实际上没有决策点,即没有直接选择一个子类实例化的决策。按这种模式编写的程序定义了一个抽象类,它去创建对象,但让子类来决定创建哪一种对象。

     使用工厂方法的情况:

    1 一个类无法预测它要创建的对象属于哪一个类

    2 一个类用它的子类来指定所创建的对象

    3 把要创建哪一个类的信息局部化的时候

    抽象工厂模式

    抽象工厂模式比工厂模式具有更高层次的抽象性,当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。

    抽象工厂的一个主要目的是它能隔离要生成的具体类,这些类的实际类名隐藏在工厂里,在客户端根本不需要知道。由于类的隔离,可以自由改动或交换这些生成类系列。此外,由于只生成一类具体的类,系统会避免读者误用不同生成系列中的类。

    尽管抽象工厂生成的所有类都具有相同的基类,但还是无法避免某些子类具有额外的,与其他类不同的方法。

    两种解决方案:

    1 在基类中定义所有的方法,即使这些方法没有实际的功能

    2 再派生出新的基类接口,它包含所有方法和所有类型的子类

  • 相关阅读:
    pgloader 学习(七) 从归档文件加载数据
    pgloader 学习(六) 加载csv 数据
    pgloader 学习(五)pgloader 参考手册
    pgloader 学习(四)一些简单操作例子
    pgloader 学习(三)快速使用
    pgloader 学习(二)特性矩阵&&命令行
    pgloader 学习(一)支持的特性
    使用readthedocs 发布 sphinx doc文档
    pgloader 方便的数据迁移工具
    circus && web comsole docker-compose 独立部署web console 的一个bug
  • 原文地址:https://www.cnblogs.com/xh831213/p/845880.html
Copyright © 2011-2022 走看看