{
  "id": "bbg-p0260-software-architecture-patterns-software-architecture",
  "title": "SOLID Principle Design Checks",
  "chapter": "software-architecture-patterns",
  "batch": "37",
  "rank": 362,
  "sourcePage": 260,
  "sourcePointer": "p. 260",
  "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 SOLID acronym checklist and good/bad design contrast without copying source examples",
      "omit original code snippets, screenshots, and mark/branding"
    ],
    "publicBoundary": [
      "original vector output",
      "no source pixels",
      "no source mark or long wording"
    ]
  },
  "callouts": [],
  "sourceReview": {
    "conceptAnchors": [
      "concept: single responsibility",
      "concept: open closed",
      "concept: liskov substitution",
      "concept: interface segregation",
      "concept: dependency inversion"
    ],
    "labelSource": "curated",
    "semanticStatus": "reviewed"
  },
  "groups": [
    {
      "id": "solid",
      "label": "Five object-design checks",
      "x": 60,
      "y": 118,
      "w": 840,
      "h": 388
    }
  ],
  "shapes": [
    {
      "id": "srp",
      "kind": "rect",
      "label": "SRP",
      "detail": "one reason",
      "x": 102,
      "y": 168,
      "w": 112,
      "h": 58,
      "tone": "blue"
    },
    {
      "id": "ocp",
      "kind": "rect",
      "label": "OCP",
      "detail": "extend not edit",
      "x": 262,
      "y": 168,
      "w": 112,
      "h": 58,
      "tone": "green"
    },
    {
      "id": "lsp",
      "kind": "rect",
      "label": "LSP",
      "detail": "safe subtype",
      "x": 422,
      "y": 168,
      "w": 112,
      "h": 58,
      "tone": "orange"
    },
    {
      "id": "isp",
      "kind": "rect",
      "label": "ISP",
      "detail": "small interface",
      "x": 582,
      "y": 168,
      "w": 112,
      "h": 58,
      "tone": "purple"
    },
    {
      "id": "dip",
      "kind": "rect",
      "label": "DIP",
      "detail": "depend inward",
      "x": 742,
      "y": 168,
      "w": 112,
      "h": 58,
      "tone": "teal"
    },
    {
      "id": "bad",
      "kind": "rect",
      "label": "Rigid design",
      "detail": "coupled change",
      "x": 230,
      "y": 338,
      "w": 150,
      "h": 70,
      "tone": "red"
    },
    {
      "id": "good",
      "kind": "rect",
      "label": "Flexible design",
      "detail": "replaceable parts",
      "x": 580,
      "y": 338,
      "w": 150,
      "h": 70,
      "tone": "green"
    },
    {
      "id": "choice",
      "kind": "diamond",
      "label": "Review",
      "detail": "violations",
      "x": 414,
      "y": 336,
      "w": 132,
      "h": 82,
      "tone": "gray"
    }
  ],
  "connectors": [
    {
      "from": "srp",
      "to": "choice",
      "label": "scope",
      "flow": "control"
    },
    {
      "from": "ocp",
      "to": "choice",
      "label": "change",
      "flow": "control"
    },
    {
      "from": "lsp",
      "to": "choice",
      "label": "subtype",
      "flow": "control"
    },
    {
      "from": "isp",
      "to": "choice",
      "label": "surface",
      "flow": "control"
    },
    {
      "from": "dip",
      "to": "choice",
      "label": "direction",
      "flow": "control"
    },
    {
      "from": "bad",
      "to": "choice",
      "label": "avoid",
      "flow": "alt"
    },
    {
      "from": "choice",
      "to": "good",
      "label": "improve",
      "flow": "main"
    }
  ]
}
