CH02 Clean Architecture 4 Layer
κ°μμμ λ€λ£¨λ 4 Layer λ΄μ©








κ°μμμ νλ‘μ νΈλ₯Ό ꡬνν λ κ·Όκ°μΌλ‘ μ¬μ©νλ μ€κ³κ΅¬μ‘°μΈ 4κ°μ κ³μΈ΅μ΄λ€. κ·Έλ¦¬κ³ κ°μμμ μ¬μ©λλ μλνν° λΌμ΄λΈλ¬λ¦¬λ€μ λν μλ΄μ΄λ€.
κ°μΈμ μΌλ‘ μ°Ύμ λ³Έ Flutter ν΄λ¦° μν€ν
μ² Layer
κ°μμλ£λ§ λ΄μλ μ νν μ΄ν΄κ° κ°μ§ μμμ μλ μΈ κ°μ§ ν¬μ€ν μ μ°Έκ³ νλ€.
μμ κ°κ°μ ν¬μ€ν μμ λ€λ£¨κ³ μλ Layer ꡬλΆλ€μ λμν ν μ΄λ―Έμ§λ€μ μλμ κ°λ€.




ν¬μ€ν λ§λ€ μ½κ°μ© μ¬μ©λλ μ©μ΄κ° λ€λ₯Έ λΆλΆμ΄ μκΈ΄ νλλ° κ³΅ν΅μ μΌλ‘ κ²°κ΅ κ°μ μ΄μΌκΈ°λ₯Ό νκ³ μλ€.
μΌλ¨ κ°μΈμ μΌλ‘λ μΈ ν¬μ€ν μ€ Flutter x Clean Architecture κ° κ°μ₯ 보기μλ μ’μλ κ² κ°λ€. λ무 μμΈν λλ λ무 λ¨μν λ¬μ¬νμ§ μμΌλ©΄μλ μ ννκ² κ° Layer μ μν κ³Ό κ° Layer μ μνλ κ²λ€μ μν λ€μ μ€λͺ νκ³ μμ΄μλ€.
κ° κ°λ μ λν΄μ λμ λ§λ‘ νμ΄μ λ€μ μ 리λ₯Ό ν΄λ³΄μ.
Layer μ μ
μΌλ¨ Layer λ€μ ꡬλΆμ λν΄μ μμ보기 μ μ Layer μ체μ λν μ μλ₯Ό ν΄μΌνλ€. ν¬μ€ν μ μ΄λ―Έ μ λ¦¬κ° μ λμ΄ μλλ° λ¨μνκ² νννμλ©΄ Layer λ Architecture λ₯Ό ꡬμ±νλ κ°λ μ΄λ€. λ 립λμ΄ μμΌλ©΄μ Architecture μ ꡬμ±μ ν¬ν¨λκΈ° μν΄μ νΉμ ν μ± μμ μ§λ κ°λ μ μΈ κ΅¬λΆ κ³μΈ΅μ΄λ€.
Architecture Letβs start with the basics: what is app architecture? App architecture is the logical way we organize our projects and how the various components interact with each other to fulfill the business requirements. We want to follow standards and make it easy to identify the components that weβll need to develop features in our codebase. The way we establish the relationship and interactions between these components can reduce or add complexity to our projects, which has a significant impact on the teamβs productivity.
Layers Now that we know what architecture is, letβs define layers. Layers are the components that compose your architecture. We can define these by assigning a specific responsibility to them. We should keep these layers simple, yet isolated enough to achieve a maintainable codebase.
κ° Layer(Presentation Layer, Domain Layer, Data Layer) νꡬ λ° Layer κ΅¬μ± μν μ΄ν΄
κ° κ΅¬μ±μ κ΄ν΄μκΉμ§ μΈμΈνκ² λμνκ° λ κ²μ μλ κ·Έλ¦Όμ΄ κ°μ₯ μ’μλ€.

Flutter x Clean Architecture μ΄ ν¬μ€ν μ λμ¨ κ·Έλ¦ΌμΈλ° μμ¬μ΄ μ μ Layer μμ²΄λ§ μ€λͺ νμΌλ©΄ μ’κ² λλ° μΌλΆ κ°λ μ΄ Bloc μ μμ‘΄μ μ΄λ€.
κ° Layer λ₯Ό ν¨ν€μ§λ‘ μμ보기


κΈ°μ‘΄μ λ€λ₯Έ λ νΌλ°μ€μμ μμλ΄€λ μλ£λ€κ³Ό λΉκ΅νμλ Application Layer λΆλΆμ΄ μ‘°κΈ λ€λ₯΄λ€. μΌλ¨ κ°μμμλ μ λ κ² μ¬μ©νλ€. κ°μλ₯Ό λͺ¨λ λλ΄λ©΄ λ€ λ€μ΄κ°λ³΄μ§ μμλ λͺ¨λ νμ νκ³ μμ΄μΌν λ΄μ©μ΄λ€
λ΄κ° μ 리ν Layer λ³ μμΈ μ 리
κ° Layer κ° μ€μ λ‘ μ΄λ»κ² ꡬνλλμ§μ λν΄μ νμ΅νλ€. μμ€μ½λ λ₯Ό 첨λΆνλ€.
νμ΅ν κ²μ κΈ°λ°μΌλ‘ μλ κ·Έλ¦Όμ λ§λ€μλ€. κ° κ΅¬μ±κ³Ό μΈλΆ νλͺ©μ λ΄μ¬ν νμ. μ°Έκ³ λ‘ κ°μμμ κ·μ ν Application Layer λ μλ κ·Έλ¦Όμμ μλ΅νλ€.
Application Layer λ λ€λ₯Έ Layer λ€κ³Ό μνΈμμ© νλ€κΈ° 보λ€λ μ΄ν리μΌμ΄μ μ μμ μ μ©λλ μμμ λν Layer μ΄λ€. λ°±μλμμ μ¬μ©νλ AppConfig ν¨ν€μ§μ μ°μκ³Ό μν μ΄ μμ ν μΌμΉνλ€.

μ¬κΈ°μ UI Widget κ³Ό State Management μ¬μ΄μ μνΈ μμ©μ΄ κ³§ view μ viewModel κ°μ μνΈμμ©μ΄λ©° 볡μ΅μ μν΄ μλ κ·Έλ¦Όμ λ€μ 보μ.

ꡬν νλ€κ° μ κΉμ© λ§νλλΌλ νμ΅νλ κ²μ λ³΄κ³ κ΅¬νμ νλ©΄ κ·Έλ§μ΄λ€. λ¬λ¬ μΈμ°λκ² μ€μν κ²μ΄ μλκ³ μ λ κ² κ³μΈ΅μ λλλ μ΄μ μ λν΄μ μκ³ , κ³μΈ΅μ λλλ κ³Όμ μμ μ΄λ€ λ°©μμΌλ‘ μ²λ¦¬νλμ§μ κ·Έ κ³Όμ μμ μ΄λ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλμ§ λ±μ λν΄μ μΈμ§νμ.
κ°μμμλ μλ¬ μ½λμ λν΄μ λ μ μ²λ¦¬ν΄ λμλλ°, λμ νλ‘μ νΈμμλ λ€λ₯΄κ² μ²λ¦¬ν κ°λ₯μ±μ΄ 컀μ μ€μ΅μμλ μλ΅νλ€.
Last updated