zoukankan      html  css  js  c++  java
  • 努力吧.关于工厂模式(一)

    ABSTRACT FACTORY 抽象工厂模式 

    其实用配电脑来解释会比较容易理解

    我有一张空白的电子表格 -------------这是一个抽象工厂
    表格里需要填入cpu 主板等 -----------这些是抽象产品

    然后这是--------------------------------具体产品

    cpu 有intel CPU amdCPU
    主板有 华硕主板 技嘉主板

    我已经写好了几种配置,这是-------------具体工厂
    第一种 cpu intel CPU
    主板 华硕主板

    第二种 cpu amd CPU
    主板 技嘉主板

    需要哪种配置,就复制一张配置单,需按配置单取产品


    这里每一张配置单可以当成一个工厂,当有多种配置的时候,就有多个工厂了。最后由工厂中的方法得到的都是一台完整的电脑

    有一点是否应该这样更解,在抽象工厂模式中,这里工厂只是负责生产,并不是持有?就是说每一次通过同一个工厂实例取得的cpu都是一个新的CPU.





    另一个例子
    例如

    我需要得到 笔和纸, 笔分为 圆珠笔 毛笔, 纸分为 作业本 练习本 。

    抽象工厂类 工厂
      具体工厂类     做作业  练字

    具体笔工厂类 作业工厂

    具体纸工厂类 练字工厂


    抽象笔
    public interface pen
    {

    }

    抽象本子
    public interface Book
    {

    }


    抽象工厂
    public interface Factory

    {
    public Pen createPen(String name);
    public Book createBook(String name);
    }


    具体笔

    圆珠笔
    public class BallPen implements Pen
    {
      private String name;
      public BallPen (String name)
      {

      }
    }

    毛笔
    public class BrushPen implements Pen
    {
      private String name;
      public BrushPen(String name)
      {

      }
    }

    具体本子
    作业本
    public class WorkBook implements Book
    {
      private String name;
      public WorkBook(String name)
      {

      }
    }

    练习本
    public class ExerciseBook implements Book
    {
      private String name;
      public ExerciseBook(String name)
      {

      }
    }

    具体作业工厂
    public class WorkFactory implements Factory
    {
    public Pen createPen(String name)
    {
    return new BallPen(name);
    }

    public Book createBook(String name)
    {
    return new WorkBook(name);
    }
    }

    具体练字工厂
    public class ExerciseFactory implements Factory
    {
    public Pen createPen(String name)
    {
    return new BrushPen(name);
    }

    public Book createBook(String name)
    {
    return new ExerciseBook(name);
    }
    }

    在这里工厂的工作就是生产某种组件,有多少种组件组合,就需要多少个具体工厂,例如我可以用圆珠笔和练习本组成一个工厂。



  • 相关阅读:
    【IDDFS】Power Calculus
    【A*/K短路】 [USACO08MAR]Cow Jogging G
    P1880 [NOI1995]石子合并
    【区间DP】[USACO16OPEN]248 G
    【树上背包】P1273 有线电视网
    【分组背包】[BJOI2019]排兵布阵
    DP学习笔记——背包专题
    【思维/构造】D
    【线段树+扫描线】P5490 【模板】扫描线
    【最小生成树】畅通工程再续 HDU
  • 原文地址:https://www.cnblogs.com/meieiem/p/2331933.html
Copyright © 2011-2022 走看看