05. ์ˆœํ™˜ ์ฐธ์กฐ
ยท
๊ฐœ๋ฐœ์„œ์ /์ž๋ฐ”-์Šคํ”„๋ง ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ˆœํ™˜ ์ฐธ์กฐ๋Š” ์˜์กด ๊ด€๊ณ„์— ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋Š” ์ƒํ™ฉ์œผ๋กœ ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ์–‘๋ฐฉํ–ฅ ์ฐธ์กฐ๋ฅผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค. @Dataclass Team { private long id; private String name; private List members;}@Dataclass Member { private long id; private String name; private Team myTeam;}@Data@NoArgsConstructor@Entity(name = "team")class TeamJpaEntity { @Id private String id; @Column private String name; @OneToMany(mappedBy = "myTeam") private List members;}@Data@No..
04. SOLID
ยท
๊ฐœ๋ฐœ์„œ์ /์ž๋ฐ”-์Šคํ”„๋ง ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP; Single Responsibility Principle)๊ฐœ๋ฐฉ ํ์‡„ ์›์น™(OCP; Open-Closed Principle)๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™(LSP; Liskov Substitution Principle)์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™(ISP; Interface Segregation Principle)์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP; Dependency Inversion Principle)๊ฐ ์›์น™์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ์ข‹์€ ์„ค๊ณ„๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ง€์ผœ์•ผ ํ•  ๊ทœ๋ฒ”์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํŒ๋‹จํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค๋ฌด์ ์ธ ์„ธ ๊ฐ€์ง€ ๋งฅ๋ฝ์ด ์žˆ๋‹ค.์˜ํ–ฅ ๋ฒ”์œ„: ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์˜ํ–ฅ ๋ฒ”์œ„๊ฐ€ ์–ด๋–ค์ง€์˜์กด์„ฑ: ์†Œํ”„ํŠธ์›จ์–ด์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ด๋ค„์ง€๋Š”์ง€ํ™•์žฅ์„ฑ:..