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

      简单工厂模式

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

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

    工厂模式

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

     使用工厂方法的情况:

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

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

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

    抽象工厂模式

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

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

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

    两种解决方案:

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

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

  • 相关阅读:
    JDK 和 OpenJDK 的区别
    IntelliJ IDEA 使用 Git 并将 GitHub 作为远程代码仓库
    SQL 常用语法记录整理
    SpringBoot SpringApplication底层源码分析与自动装配
    一步步从Spring Framework装配掌握SpringBoot自动装配
    SpringBoot系列教程起步
    Redis高级进阶
    Redis构建文章聚合信息分类网站
    Redis快速起步及Redis常用命令大全
    Redis构建处理海量数据的大型购物网站
  • 原文地址:https://www.cnblogs.com/xh831213/p/845880.html
Copyright © 2011-2022 走看看