{
  "id": "bbg-p0305-architecture-source-map-architecture-source",
  "title": "Design Pattern Families",
  "chapter": "software-architecture-patterns",
  "batch": "10",
  "rank": 93,
  "sourcePage": 305,
  "sourcePointer": "p. 305",
  "status": "accepted",
  "reviewerStatus": "reviewed",
  "fidelityScore": 0.9,
  "canvas": {
    "width": 960,
    "height": 640
  },
  "fireworksTechGraph": {
    "style": "style-1-flat-icon",
    "diagramType": "comparison",
    "topologyNotes": [
      "source page render inspected",
      "extracted page text inspected",
      "source page render inspected",
      "preserve grid of common design patterns grouped into creation, structure, and behavior concerns",
      "retargeted from concurrency extraction to software-architecture-patterns chapter"
    ],
    "publicBoundary": [
      "original vector output",
      "no source pixels",
      "no source mark or long wording"
    ]
  },
  "callouts": [],
  "sourceReview": {
    "conceptAnchors": [
      "concept: creational patterns",
      "concept: structural patterns",
      "concept: behavioral patterns",
      "concept: factory builder singleton prototype",
      "concept: adapter bridge composite decorator facade proxy",
      "concept: command iterator mediator observer visitor"
    ],
    "labelSource": "curated",
    "semanticStatus": "reviewed"
  },
  "groups": [
    {
      "id": "create",
      "label": "Creation",
      "x": 58,
      "y": 126,
      "w": 252,
      "h": 318
    },
    {
      "id": "structure",
      "label": "Structure",
      "x": 354,
      "y": 126,
      "w": 252,
      "h": 318
    },
    {
      "id": "behavior",
      "label": "Behavior",
      "x": 650,
      "y": 126,
      "w": 252,
      "h": 318
    }
  ],
  "shapes": [
    {
      "id": "abstractFactory",
      "kind": "rect",
      "label": "Abstract factory",
      "detail": "related objects",
      "x": 86,
      "y": 162,
      "w": 132,
      "h": 48,
      "tone": "blue"
    },
    {
      "id": "builder",
      "kind": "rect",
      "label": "Builder",
      "detail": "step by step",
      "x": 86,
      "y": 232,
      "w": 132,
      "h": 48,
      "tone": "blue"
    },
    {
      "id": "singleton",
      "kind": "rect",
      "label": "Singleton",
      "detail": "one instance",
      "x": 86,
      "y": 302,
      "w": 132,
      "h": 48,
      "tone": "blue"
    },
    {
      "id": "prototype",
      "kind": "rect",
      "label": "Prototype",
      "detail": "clone",
      "x": 86,
      "y": 372,
      "w": 132,
      "h": 48,
      "tone": "blue"
    },
    {
      "id": "adapter",
      "kind": "rect",
      "label": "Adapter",
      "detail": "fit interface",
      "x": 384,
      "y": 154,
      "w": 132,
      "h": 44,
      "tone": "green"
    },
    {
      "id": "bridge",
      "kind": "rect",
      "label": "Bridge",
      "detail": "decouple",
      "x": 384,
      "y": 214,
      "w": 132,
      "h": 44,
      "tone": "green"
    },
    {
      "id": "composite",
      "kind": "rect",
      "label": "Composite",
      "detail": "tree object",
      "x": 384,
      "y": 274,
      "w": 132,
      "h": 44,
      "tone": "green"
    },
    {
      "id": "decorator",
      "kind": "rect",
      "label": "Decorator",
      "detail": "wrap feature",
      "x": 384,
      "y": 334,
      "w": 132,
      "h": 44,
      "tone": "green"
    },
    {
      "id": "facade",
      "kind": "rect",
      "label": "Facade proxy",
      "detail": "simplify stand in",
      "x": 384,
      "y": 394,
      "w": 132,
      "h": 44,
      "tone": "green"
    },
    {
      "id": "command",
      "kind": "rect",
      "label": "Command",
      "detail": "request object",
      "x": 682,
      "y": 154,
      "w": 132,
      "h": 44,
      "tone": "orange"
    },
    {
      "id": "iterator",
      "kind": "rect",
      "label": "Iterator",
      "detail": "one by one",
      "x": 682,
      "y": 214,
      "w": 132,
      "h": 44,
      "tone": "orange"
    },
    {
      "id": "mediator",
      "kind": "rect",
      "label": "Mediator",
      "detail": "hub",
      "x": 682,
      "y": 274,
      "w": 132,
      "h": 44,
      "tone": "orange"
    },
    {
      "id": "observer",
      "kind": "rect",
      "label": "Observer",
      "detail": "notify",
      "x": 682,
      "y": 334,
      "w": 132,
      "h": 44,
      "tone": "orange"
    },
    {
      "id": "visitor",
      "kind": "rect",
      "label": "Visitor",
      "detail": "external op",
      "x": 682,
      "y": 394,
      "w": 132,
      "h": 44,
      "tone": "orange"
    }
  ],
  "connectors": [
    {
      "from": "abstractFactory",
      "to": "builder",
      "label": "create",
      "flow": "main"
    },
    {
      "from": "builder",
      "to": "singleton",
      "label": "scope",
      "flow": "control"
    },
    {
      "from": "adapter",
      "to": "bridge",
      "label": "separate",
      "flow": "main"
    },
    {
      "from": "composite",
      "to": "decorator",
      "label": "compose",
      "flow": "data"
    },
    {
      "from": "command",
      "to": "mediator",
      "label": "route",
      "flow": "control"
    },
    {
      "from": "observer",
      "to": "visitor",
      "label": "extend",
      "flow": "async"
    }
  ]
}
