π Computer Science/β Design Pattern
![μ»΄ν¬μ§νΈ ν¨ν΄(Composite Pattern)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyRhuS%2Fbtshz1P6ReY%2FN3LBIpHOlBWTTCdjKHWgn1%2Fimg.png)
μ»΄ν¬μ§νΈ ν¨ν΄(Composite Pattern)
μ»΄ν¬μ§νΈ ν¨ν΄(Composite Pattern) μ»΄ν¬μ§νΈ OOPμμ μ»΄ν¬μ§νΈλ νλ μ΄μμ μ μ¬ν κ°μ²΄λ‘ ꡬμ±λ μ§ν© κ°μ²΄λ‘ λͺ¨λ μ μ¬ν κΈ°λ₯μ λνλΈλ€. μ΄λ₯Ό ν΅ν΄ κ°μ²΄ κ·Έλ£Ήμ μ‘°μνλ κ²μ²λΌ λ¨μΌ κ°μ²΄λ₯Ό μ‘°μν μ μλ€. μ»΄ν¬μ§νΈ ν¨ν΄ μ»΄ν¬μ§νΈ ν¨ν΄μ λ³΅ν© κ°μ²΄λ λ¨μΌ κ°μ²΄λ₯Ό λμΌνκ² μ·¨κΈνλ κ²μ λͺ©μ μΌλ‘ νλ€. νΈλ¦¬ κ΅¬μ‘°λ‘ μμ±νμ¬ μ 체-λΆλΆ(whole-part) κ΄κ³λ₯Ό νννλ€. 1. ꡬν μ¬μ©μλ Leafμ Composite ν΄λμ€λ₯Ό μ§μ μ°Έμ‘°νμ§ μκ³ , κ³΅ν΅ μΈν°νμ΄μ€ Componentλ₯Ό μ°Έμ‘°νλ€. 1) Component λͺ¨λ Componentλ€μ μν μΆμνλ κ°λ μ΄λ€. Leafμ Composite ν΄λμ€μ μΈν°νμ΄μ€μ΄λ€. interface Graphic { public void print..
![μ€νΈλν°μ§ ν¨ν΄(Strategy Pattern)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOZRWE%2FbtsgDiq3VpO%2Fs8mW7Q7I5NXYvXGpw2TSOk%2Fimg.png)
μ€νΈλν°μ§ ν¨ν΄(Strategy Pattern)
μ€νΈλν°μ§ ν¨ν΄(Strategy Pattern) μ λ΅ ν¨ν΄μ΄λ λΉμ·ν λμμ νμ§λ§ λ€λ₯΄κ² ꡬνλμ΄ μλ νμ(μ λ΅)λ€μ 곡ν΅μ μΈν°νμ΄μ€λ₯Ό μμλ°λ κ°κ°μ ν΄λμ€λ‘ ꡬννκ³ λμ μΌλ‘ λ°κΏ μ μλλ‘ νλ ν¨ν΄μ΄λ€. μ λ΅ ν¨ν΄μΌλ‘ ꡬνλ μ½λλ μ§μ νμμ λν μ½λλ₯Ό μμ ν νμ μμ΄ μ λ΅λ§ λ³κ²½νμ¬ μ μ°νκ² νμ₯ν μ μκ² λλ€. 1. ꡬν λ§μ½ μ λ΅ ν¨ν΄μ μ¬μ©νμ§ μλλ€λ©΄, λ¨μν if-elseλ₯Ό μ¬μ©νμ¬ κ΅¬νν΄μΌ νλ©° κ²μμ΄ μ λ°μ΄νΈλμ΄ μ§μ μ΄ μΆκ°λκ±°λ μμ μ΄ νμνλ€λ©΄ attack() λ©μλλ₯Ό μμ ν΄μΌ ν κ²μ΄λ€. class Character { private final String job; Character(String job) { this.job = job; } void attack() ..
![[κ²μ νλ‘κ·Έλλ° ν¨ν΄] κ²μ κ°λ°μμ μ¬μ©λλ λμμΈ ν¨ν΄](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzlEGE%2FbtsfdpLW4BO%2F1qtEOAGlLOkpZ8IlKvktm0%2Fimg.jpg)
[κ²μ νλ‘κ·Έλλ° ν¨ν΄] κ²μ κ°λ°μμ μ¬μ©λλ λμμΈ ν¨ν΄
κ²μ κ°λ°μμ μ¬μ©λλ λμμΈ ν¨ν΄ κ²μ κ°λ°μ κ΄μ μμ κ° λμμΈ ν¨ν΄μ λν΄μ λ€λ£° κ²μ΄λ€. κ·Έλ¬λ λͺ¨λ μ±μ΄λ κ²μ κ°λ°μμλ μ μ©λλ€. 1. Singleton Design Pattern νλ‘κ·Έλ¨μ΄ μμλ λ ν΄λμ€κ° μ΅μ΄ ν λ²λ§ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ κ·Έ λ©λͺ¨λ¦¬μ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ μ¬μ© 2020.05.16 - [π/β Design Pattern] - μ±κΈν€ ν¨ν΄(Singleton Pattern) κ²μμμλ μνμ²λΌ ν λͺ μ λλ ν°κ° μ‘΄μ¬νλ€. λλ ν°λ κ²μμμ μΌμ΄λλ λͺ¨λ κ²μ μννλ ν΄λμ€μ΄λ€. μ€λΈμ νΈλ₯Ό λλλ§ νκ³ μμΉλ₯Ό μ λ°μ΄νΈνκ³ νλ μ΄μ΄μ μ λ ₯μ μ νν μΊλ¦ν°μ μ λ¬ν΄ μ£Όλ λ±μ μν μ μννλ€. Singleton ν¨ν΄μ ν΅ν΄ λλ ν°κ° νλ μ΄μ μμ±λλ κ²μ λ°©μ§νλ€. 2. Strat..
[κ²μ νλ‘κ·Έλλ° ν¨ν΄] λν° νλκ·Έ ν¨ν΄(Dirty Flag Pattern)
λν° νλκ·Έ ν¨ν΄(Dirty Flag Pattern) μ΄λ¦μ²λΌ λλ¬μ΄ ν¨ν΄μ μλλ€. μ€νλ € κΉλνκ² μ΅μ νν΄μ£Όλ ν¨κ³Όκ° μλ€. λν° νλκ·Έλ λΆνμν μμ μ νΌνκΈ° μν΄ μ€μ λ‘ νμν λκΉμ§ κ·Έ μΌμ 미루λ κ²μ λ§νλ€. κ°μ λ³κ²½μ΄ μΌμ΄λμΌ νλ μν©μ νλκ·Έλ‘ μ€μ ν΄λμ΄, κΌ νμν μν©μλ§ κ°±μ μ νλλ‘ ν΄μ£Όλ ν¨ν΄μ΄λ€. λ³νκ° μλ μν©μΈλ° λΆνμν μ°μ°μ νλ€λ©΄ νΌν¬λ¨Όμ€μ μ§μ₯μ μ£ΌκΈ° λλ¬Έμ΄λ€. λ λλ§ νμ΄νλΌμΈμ μλ‘ λ€μ΄λ³΄μ. 2020.06.21 - [π/β Computer Graphics] - λ λλ§ νμ΄νλΌμΈ λ λλ§ νμ΄νλΌμΈ λ λλ§ νμ΄νλΌμΈ 3D μΈκ³μ λν κΈ°ννμ ννκ³Ό μ΄ μΈκ³λ₯Ό λ°λΌλ³΄λ κ΄μ μ μ μνλ κ°μ μΉ΄λ©λΌλ₯Ό μ΄μ©ν΄ 2D μ΄λ―Έμ§λ₯Ό λ§λ€μ΄λ΄λ κ³Όμ μ΄λ€. 1) 3D λͺ¨λΈ ..
[κ²μ νλ‘κ·Έλλ° ν¨ν΄] κ²μ 루ν ν¨ν΄(Game Loop Pattern)
κ²μ 루ν ν¨ν΄(Game Loop Pattern) λ¨Όμ μμ½νμλ©΄ κ²μ 루ν ν¨ν΄μ΄λ κ²μ μ§νμ μ μ μ λ ₯, νλ‘μΈμ μλμ λ컀νλ§ νλ κ²μ΄λ€. λ μ½κ² λ§νμλ©΄ μ λ ₯μ΄ μμ΄λ νλ‘μΈμκ° μ λμκ°λ€λ λ§μ΄λ€. μ΄ ν¨ν΄μ νΉμνμ¬ κ²μ λΆμΌ μΈμμλ μ°Ύμ보기λ νλ€μ§λ§ μ€μ λ‘ λ§μ΄ μ°μ΄κ³ μλ€. (μ λν° λ± κ²μ μμ§) μμ νλ‘κ·Έλλ¨Έλ μ½λλ₯Ό λͺ¨λ μ§κ³ λμμΌ νλ‘κ·Έλ¨μ λ릴 μ μμλ€. μ¦, μ€κ°μ νμΈνλ κ²μ κ±°μ λΆκ°λ₯νλ€. μ΄λ° νλ‘κ·Έλ¨μ λ°°μΉ λͺ¨λ νλ‘κ·Έλ¨μ΄λΌκ³ νλλ°, λͺ¨λ μμ μ΄ λλκ³ λλ©΄ νλ‘κ·Έλ¨μ΄ λ©μΆλ€. μ¬κΈ°μ λμ€λ λ¬Έμ μ μ λλ²κΉ νλ λ°λ μ€λ κ±Έλ € μμ°μ±μ΄ λ¨μ΄μ§κ² λλ€λ μ μ΄λ€. κ·Έλμ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λνν νλ‘κ·Έλ¨μ΄ λμλ€. νλ μ΄μ΄μ μ λ ₯μ κΈ°λ€λ Έλ€κ° μλ΅νλ©΄..
![μ΅μ λ² ν¨ν΄(Observer Pattern)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMlt0i%2Fbtrj4VZZgL6%2FMfCOcdeKUu5TMQg3aOe7vK%2Fimg.png)
μ΅μ λ² ν¨ν΄(Observer Pattern)
μ΅μ λ² ν¨ν΄(Observer Pattern) λ§μ½ μ μ μ κ²μ λ¨Έλκ° μ λ°μ΄νΈλμ΄ UI, μ΄λ²€νΈ λ± λ€λ₯Έ μ€λΈμ νΈμ λ³κ²½μ΄ νμνλ€λ©΄ μ΄λ»κ² ꡬνν κ²μΈκ°? λ§€λ² λ€λ₯Έ μ€λΈμ νΈκ° κ²μ λ¨Έλ μ λ°μ΄νΈκ° λλμ§ νμΈν μ μμ κ²μ΄λ€. μ΄λ΄ λ νμν κ²μ΄ μ΅μ λ² ν¨ν΄μ΄λ€. Sudject(κ²μ λ¨Έλ)λ‘λΆν° μ΄λ ν λ³νκ° μκΈ΄λ€λ©΄, Observerλ μ΄ λ³νλ₯Ό κ°μ§ν μ μλ€. κ°μ²΄μ μν λ³νλ₯Ό κ΄μ°°νλ κ΄μ°°μ(μ΅μ λ²)κ° μλ€. κ΄μ°°μλ₯Ό κ°μ²΄κ° κ°κ³ μλ€κ° μν λ³νκ° μμ λ λ©μλ λ±μ ν΅ν΄ κ°μ²΄κ° κ° μ΅μ λ²μκ² ν΅μ§νλ€. μ£Όλ‘ λΆμ° μ΄λ²€νΈ νΈλ€λ§ μμ€ν μ ꡬννλ λ° μ¬μ©λλ€. μ¬κΈ°μ ν΅μ¬μ κ°μ²΄μ μν λ³νλ₯Ό κ΄μ°°νλ κ²μΈλ°, κ³Όμ° μ΄λ»κ² κ΄μ°°νλ€λ κ²μΌκΉ? 1. ꡬν 1) Observer Concr..