1"use strict";(self.webpackChunkgracefullight_github_io=self.webpackChunkgracefullight_github_io||[]).push([["15861"],{74658(e,i,n){n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>r,default:()=>x,frontMatter:()=>d,metadata:()=>s,toc:()=>h});var s=n(61741),t=n(74848),l=n(28453);let d={title:"SOLID \uC6D0\uCE59",date:new Date("2025-01-28T09:17:54.375Z"),description:"SOLID Principles",authors:"me",tags:["pe","pe/sw"]},r,c={authorsImageUrls:[void 0]},h=[{value:"SOLID \uC6D0\uCE59 \uAC1C\uB150",id:"solid-\uC6D0\uCE59-\uAC1C\uB150",level:2},{value:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59\uACFC \uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",id:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59\uACFC-\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",level:2},{value:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59",id:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59",level:3},{value:"\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",id:"\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",level:3},{value:"\uB9AC\uC2A4\uCF54\uD504 \uCE58\uD658\uC6D0\uCE59\uACFC \uC778\uD130\uD398\uC774\uC2A4 \uBD84\uB9AC\uC6D0\uCE59",id:"\uB9AC\uC2A4\uCF54\uD504-\uCE58\uD658\uC6D0\uCE59\uACFC-\uC778\uD130\uD398\uC774\uC2A4-\uBD84\uB9AC\uC6D0\uCE59",level:2},{value:"\uB9AC\uC2A4\uCF54\uD504 \uCE58\uD658\uC6D0\uCE59",id:"\uB9AC\uC2A4\uCF54\uD504-\uCE58\uD658\uC6D0\uCE59",level:3},{value:"\uC778\uD130\uD398\uC774\uC2A4 \uBD84\uB9AC\uC6D0\uCE59",id:"\uC778\uD130\uD398\uC774\uC2A4-\uBD84\uB9AC\uC6D0\uCE59",level:3},{value:"\uC758\uC874\uC131\uC5ED\uC804\uC6D0\uCE59",id:"\uC758\uC874\uC131\uC5ED\uC804\uC6D0\uCE59",level:2},{value:"\uAC1D\uCCB4\uC9C0\uD5A5 \uC124\uACC4\uC2DC \uACE0\uB824\uC0AC\uD56D",id:"\uAC1D\uCCB4\uC9C0\uD5A5-\uC124\uACC4\uC2DC-\uACE0\uB824\uC0AC\uD56D",level:2}];function a(e){let i={h2:"h2",h3:"h3",img:"img",li:"li",mermaid:"mermaid",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h2,{id:"solid-\uC6D0\uCE59-\uAC1C\uB150",children:"SOLID \uC6D0\uCE59 \uAC1C\uB150"}),"\n",(0,t.jsx)(i.mermaid,{value:'graph LR\n %% \uD544\uC694\uC131 \uC601\uC5ED\n subgraph Necessity["\uD544\uC694\uC131"]\n A["\uC720\uC9C0\uBCF4\uC218\uC131 \uD5A5\uC0C1"]\n B["\uC720\uC5F0\uD55C SW \uAC1C\uBC1C"]\n C["\uD655\uC7A5 \uAC00\uB2A5\uD55C \uC124\uACC4"]\n end\n\n %% SOLID \uC6D0\uCE59 \uC601\uC5ED\n subgraph SOLID_Principles["SOLID \uC6D0\uCE59"]\n direction LR\n SRP["Single Responsibility Principle"]\n OCP["Open Closed Principle"]\n LSP["Liskov Substitution Principle"]\n ISP["Interface Segregation Principle"]\n DIP["Dependency Inversion Principle"]\n end\n\n %% \uD65C\uC6A9 \uBC29\uC548 \uC601\uC5ED\n subgraph Utilization["\uD65C\uC6A9 \uBC29\uC548"]\n X["\uB514\uC790\uC778 \uD328\uD134"]\n Y["\uB9AC\uD329\uD1A0\uB9C1"]\n Z["\uC544\uD0A4\uD14D\uCC98 \uD45C\uC900\uD654"]\n end\n\n %% \uAD00\uACC4 \uC5F0\uACB0\n A --\x3e SOLID_Principles\n B --\x3e SOLID_Principles\n C --\x3e SOLID_Principles\n\n SOLID_Principles --\x3e X\n SOLID_Principles --\x3e Y\n SOLID_Principles --\x3e Z'}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"\uAC1D\uCCB4\uC9C0\uD5A5 \uC124\uACC4\uC2DC SOLID 5\uAC00\uC9C0 \uC6D0\uCE59\uC744 \uC900\uC218\uD558\uC5EC \uC720\uC9C0\uBCF4\uC218\uC131\uACFC \uD655\uC7A5\uC131\uC744 \uAC00\uC9C4 \uC720\uC5F0\uD55C \uC18C\uD504\uD2B8\uC6E8\uC5B4 \uAD6C\uD604 \uAC00\uB2A5"}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59\uACFC-\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",children:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59\uACFC \uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59"}),"\n",(0,t.jsx)(i.h3,{id:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59",children:"\uB2E8\uC77C\uCC45\uC784\uC6D0\uCE59"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"\uAD6C\uBD84"}),(0,t.jsx)(i.th,{children:"\uC124\uBA85"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150\uB3C4"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.img,{alt:"srp",src:n(40557).A+"",width:"658",height:"476"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150"}),(0,t.jsx)(i.td,{children:"\uAC1D\uCCB4\uB294 \uB2E8 \uD558\uB098\uC758 \uCC45\uC784\uB9CC \uAC00\uC838\uC57C\uD55C\uB2E4\uB294 \uC6D0\uCE59"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uD2B9\uC9D5"}),(0,t.jsx)(i.td,{children:"\uBCC0\uACBD\uC5D0 \uB300\uD55C \uC758\uC874\uC131 \uADF9\uBCF5, \uC751\uC9D1\uB3C4 \uD5A5\uC0C1"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uC608\uC2DC"}),(0,t.jsx)(i.td,{children:"\uD30C\uC77C \uC77D\uAE30, \uC4F0\uAE30 \uD074\uB798\uC2A4 \uBD84\uB9AC"})]})]})]}),"\n",(0,t.jsx)(i.h3,{id:"\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59",children:"\uAC1C\uBC29\uD3D0\uC1C4\uC6D0\uCE59"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"\uAD6C\uBD84"}),(0,t.jsx)(i.th,{children:"\uC124\uBA85"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150\uB3C4"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.img,{alt:"ocp",src:n(13098).A+"",width:"594",height:"484"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150"}),(0,t.jsx)(i.td,{children:"\uD074\uB798\uC2A4\uB294 \uD655\uC7A5\uC5D0\uB294 \uC5F4\uB9AC\uA
1CE0 \uC218\uC815\uC5D0\uB294 \uB2EB\uD600\uC788\uC5B4\uC57C\uD55C\uB2E4\uB294 \uC6D0\uCE59"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uD2B9\uC9D5"}),(0,t.jsx)(i.td,{children:"\uCD94\uC0C1\uD654\uB85C\uC778\uD55C \uB2E4\uD615\uC131, \uD655\uC7A5\uC131, \uAC1D\uCCB4\uC9C0\uD5A5 \uC7A5\uC810 \uADF9\uB300\uD654"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uC608\uC2DC"}),(0,t.jsx)(i.td,{children:"\uC0C8\uB85C\uC6B4 \uAE30\uB2A5 \uCD94\uAC00\uC2DC \uCD94\uC0C1\uD074\uB798\uC2A4 \uD65C\uC6A9"})]})]})]}),"\n",(0,t.jsx)(i.h2,{id:"\uB9AC\uC2A4\uCF54\uD504-\uCE58\uD658\uC6D0\uCE59\uACFC-\uC778\uD130\uD398\uC774\uC2A4-\uBD84\uB9AC\uC6D0\uCE59",children:"\uB9AC\uC2A4\uCF54\uD504 \uCE58\uD658\uC6D0\uCE59\uACFC \uC778\uD130\uD398\uC774\uC2A4 \uBD84\uB9AC\uC6D0\uCE59"}),"\n",(0,t.jsx)(i.h3,{id:"\uB9AC\uC2A4\uCF54\uD504-\uCE58\uD658\uC6D0\uCE59",children:"\uB9AC\uC2A4\uCF54\uD504 \uCE58\uD658\uC6D0\uCE59"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"\uAD6C\uBD84"}),(0,t.jsx)(i.th,{children:"\uC124\uBA85"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150\uB3C4"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.img,{alt:"lsp",src:n(66361).A+"",width:"586",height:"410"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150"}),(0,t.jsx)(i.td,{children:"\uC0C1\uC704 \uD074\uB798\uC2A4\uB294 \uD558\uC704 \uD074\uB798\uC2A4\uB85C \uB300\uCCB4\uD560 \uC218 \uC788\uC5B4\uC57C\uD55C\uB2E4\uB294 \uC6D0\uCE59"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uD2B9\uC9D5"}),(0,t.jsx)(i.td,{children:"\uC0C1\uC18D\uC744 \uD1B5\uD55C \uC7AC\uC0AC\uC6A9\uC131 \uD655\uBCF4, \uBD80\uBAA8-\uC790\uC2DD \uD074\uB798\uC2A4 \uAC04 IS-A \uAD00\uACC4 \uBCF4\uC7A5"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uC608\uC2DC"}),(0,t.jsx)(i.td,{children:"HashSet\uC740 Set\uC758 add \uBA54\uC18C\uB4DC \uC0AC\uC6A9 \uAC00\uB2A5"})]})]})]}),"\n",(0,t.jsx)(i.h3,{id:"\uC778\uD130\uD398\uC774\uC2A4-\uBD84\uB9AC\uC6D0\uCE59",children:"\uC778\uD130\uD398\uC774\uC2A4 \uBD84\uB9AC\uC6D0\uCE59"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"\uAD6C\uBD84"}),(0,t.jsx)(i.th,{children:"\uC124\uBA85"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150\uB3C4"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.img,{alt:"isp",src:n(30864).A+"",width:"618",height:"484"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150"}),(0,t.jsx)(i.td,{children:"\uD074\uB77C\uC774\uC5B8\uD2B8\uB294 \uC790\uC2E0\uC774 \uC0AC\uC6A9\uD558\uB294 \uC778\uD130\uD398\uC774\uC2A4\uB9CC \uC758\uC874\uD574\uC57C\uD558\uB294 \uC6D0\uCE59"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uD2B9\uC9D5"}),(0,t.jsx)(i.td,{children:"\uD074\uB77C\uC774\uC5B8\uD2B8\uC5D0 \uBAA9\uC801\uACFC \uC6A9\uB3C4\uC5D0 \uC801\uD569\uD55C \uC778\uD130\uD398\uC774\uC2A4 \uC81C\uACF5, \uD655\uC7A5\uC131 \uC99D\uAC00"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uC608\uC2DC"}),(0,t.jsx)(i.td,{children:"Pet \uC778\uD130\uD398\uC774\uC2A4 \uBD84\uB9AC\uB85C \uC9D6\uB294 \uAE30\uB2A5 \uAD6C\uD604"})]})]})]}),"\n",(0,t.jsx)(i.h2,{id:"\uC758\uC874\uC131\uC5ED\uC804\uC6D0\uCE59",children:"\uC758\uC874\uC131\uC5ED\uC804\uC6D0\uCE59"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"\uAD6C\uBD84"}),(0,t.jsx)(i.th,{children:"\uC124\uBA85"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150\uB3C4"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.img,{alt:"dip",src:n(45815).A+"",width:"588",height:"426"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uAC1C\uB150"}),(0,t.jsx)(i.td,{children:"\uACE0\uC218\uC900 \uD074\uB77C\uC774\uC5B8\uD2B8\uB294 \uC800\uC218\uC900 \uBAA8\uB4C8\uC758 \uAD6C\uD604\uC5D0 \uC758\uC874\uD558\uC9C0 \uC54A\uACE0, \uCD94\uC0C1\uD654\uB41C \uC778\uD130\uD398\uC774\uC2A4\uC5D0 \uC758\uC874\uD574\uC57C\uD55C\uB2E4\uB294 \uC6D0\uCE59"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uD2B9\uC9D5"}),(0,t.jsx)(i.td,{children:"\uBCC0\uD654\uD558\uAE30 \uC5B4\uB824\uC6B4 \uC778\uD130\uD398\uC774\uC2A4\uC5D0 \uC758\uC874, \uACB0\uD569\uB3C4 \uC644\uD654"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"\uC608\uC2DC"}),(0,t.jsx)(i.td,{children:"\uD2B9\uC815 DB\uD074\uB798\uC2A4\uAC00 \uC544\uB2CC Database \uC778\uD130\uD398\uC774\uC2A4 \uC0AC\uC6A9 \uC5F0\uB3D9"})]})]})]}),"\n",(0,t.jsx)(i.h2,{id:"\uAC1D\uCCB4\uC9C0\uD5A5-\uC124\uACC4\uC2DC-\uACE0\uB824\uC0AC\uD56D",children:"\uAC1D\uCCB4\uC9C0\uD5A5 \uC124\uACC4\uC2DC \uACE0\uB824\uC0AC\uD56D"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"SonarLint \uB4F1 \uC815\uC801\uBD84\uC11D\uB3C4\uAD6C \uD65C\uC6A9 SOLID \uC6D0\uCE59 \uC900\uC218 \uAC10\uC0AC"}),"\n",(0,t.jsx)(i.li,{children:"\uC608\uBC29\uBE44\uC6A9\uC744 \uB192\uC5EC SW\uD488\uC9C8 \uD5A5\uC0C1 \uD544\uC694"}),"\n"]})]})}function x(e={}){let{wrapper:i}={...(0,l.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},45815(e,i,n){n.d(i,{A:()=>s});let s=n.p+"assets/images/dip-836645dd3b3ee0223ab7892fd2c66db2.jpg"},30864(e,i,n){n.d(i,{A:()=>s});let s=n.p+"assets/images/isp-d556ba7f13baf5dca6735d531481bfa8.jpg"},66361(e,i,n){n.d(i,{A:()=>s});let s=n.p+"assets/images/lsp-d5b22d9b4cd2f7a4ba4138a472111cda.jpg"},13098(e,i,n){n.d(i,{A:()=>s});let s=n.p+"assets/images/ocp-c40011511a177257160ca6be90353fd4.jpg"},40557(e,i,n){n.d(i,{A:()=>s});let s=n.p+"assets/images/srp-d3c11735d1bc0660d50539236c688f73.jpg"},28453(e,i,n){n.d(i,{R:()=>d,x:()=>r});var s=n(96540);let t={},l=s.createContext(t);function d(e){let i=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(l.Provider,{value:i},e.children)}},61741(e){e.exports=JSON.parse('{"permalink":"/pe/sw/solid-principles","source":"@site/blog/pe/sw/solid-principles.md","title":"SOLID \uC6D0\uCE59","description":"SOLID Principles","date":"2025-01-28T09:17:54.375Z","tags":[{"inline":false,"label":"professional-engineer","permalink":"/tags/pe","description":"\uAE30\uC220\uC0AC \uAD00\uB828 \uD3EC\uC2A4\uD2B8"},{"inline":false,"label":"pe/software-engineering","permalink":"/tags/pe/sw","description":"\uAE30\uC220\uC0AC \uC18C\uD504\uD2B8\uC6E8\uC5B4\uACF5\uD559 \uD1A0\uD53D"}],"readingTime":1.4,"hasTruncateMarker":false,"authors":[{"name":"Eunkwang Shin","title":"Owner","url":"https://github.com/gracefullight","socials":{"linkedin":"https://www.linkedin.com/in/gracefullight/","github":"https://github.com/gracefullight","email":"mailto:[email protected]"},"description":"Full Stack JavaScript Developer | Half-time Open Sourcerer.","page":{"permalink":"/authors/me"},"imageURL":"https://avatars.githubusercontent.com/u/11773683?v=4","key":"me"}],"frontMatter":{"title":"SOLID \uC6D0\uCE59","date":"2025-01-28T09:17:54.375Z","description":"SOLID Principles","authors":"me","tags":["pe","pe/sw"]},"unlisted":false,"prevItem":{"title":"\uD074\uB77C\uC6B0\uB4DC \uC804\uD658\uC0AC\uC5C5\uC758 \uB2E8\uACC4\uBCC4 \uAC10\uB9AC","permalink":"/pe/pm/\uD074\uB77C\uC6B0\uB4DC-\uC804\uD658\uC0AC\uC5C5\uC758-\uB2E8\uACC4\uBCC4-\uAC10\uB9AC"},"nextItem":{"title":"\uBA40\uD2F0 GPU","permalink":"/pe/ca/multi-gpu"}}')}
1}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.