✏︎ 객체지향 설계할 때 이런 방식이 이상적인 방식이다고 밥이 의견을 냈다.
✔︎ 객체지향 언어 쪽에서는 유명하고 원칙적인 방식으로 자리하고 있다.
📌
S
✏︎ 단일 책임 원칙 (Single Responsibility Principle)을 의미한다.
✔︎ 클래스 만들 때 모든 내용을 넣지 말고 각각의 역할에 맞게 하나의 책임만 가져서 유지 보수가 편하게 구현을 해야 한다는 의미이다.
📌
O
✏︎ 개방 - 폐쇄 원칙 (Open/Closed Principle)을 의미한다.
✔︎ 확장에는 열려 있고 수정에는 닫혀야 한다로 부모 클래스 상속받아서 재정의하거나 확장할 수 있고 재정의를 하더라도 부모 클래스의 내용을 임의로 수정할 수 없다는 의미이다.
📌
L
✏︎ 리스코프 치환 원칙 (Liskov Substitution Principle)을 의미한다.
✔︎ 부모 타입 자리에 자식 타입을 넣어도 동작해야 한다는Widget클래스 상속받고 있는StatelessWidget,StatefulWidget이Widget타입으로 치환이 가능해야 한다는 것을 의미한다.
📌
I
✏︎ 인터페이스 분리 원칙 (Interface Segregation Principle)을 의미한다.
✔︎ 인터페이스 안에다 내용을 다 넣지 않고 기능별로 나눠서 구현하는 원칙이다.
📌
D
✏︎ 의존성 역전 원칙 (Dependency Inversion Principle)을 의미한다.
✔︎ 고수준 모듈은 저수준 모듈이 아니라 추상화에 의존해야 한다로 한 클래스 안에서 특정 클래스를 바로 참조하는 게 아니라Interface를 참조해서 상위 호환이 가능하고 구현체 클래스가Interface가 오게 돼도 작동이 잘 되는 식으로 구현체가 아닌Interface에 의존하는 것을 의미한다.
📌 영화정보 앱 구현하기 1
영화정보 가져와서 화면에 보여준다.
📌 영화정보 앱 구현하기 2
[영화정보 가져오기 기능] - TMDB API에서 영화 목록을 가져와 그대로 객체로 변환 - 앱에서 필요한 정보만 추려 새로운 객체로 변환 [영화정보 담을 변수] [영화정보 보여주는 화면]
📌 영화정보 앱 구현하기 3
[영화정보 가져오기 기능] - TMDB 데이터 담을 클래스 - TMDB 영화목록 가져오기 - 앱에서 필요한 정보만 가지고 있는 클래스 - 앱 객체로 변환 [영화정보 담을 변수] [영화정보 보여주는 화면]
📌 영화정보 앱 구현하기 4
[영화정보 가져오기 기능] => UseCase - TMDB 데이터 담을 클래스 => DTO(fromJson 포함) - TMDB 영화목록 가져오기 => DataSource (http 호출) - 앱에서 필요한 정보만 가지고 있는 클래스 => Entity - 앱 객체로 변환 => Repository [영화정보 담을 변수] => ViewModel [영화정보 보여주는 화면] => View(Widget)
- 2000~2010년대에 인터넷 황금기가 시작되었다.
- 이때 사용자가 증가하게 되면서 돈을 벌기 위해 사업을 확장해 나가면서 코드 기능이 많이 추가되면서 코드가 뒤죽박죽돼서 관리가 안 되는 스파게티 코드가 되는 상황이 발생했다.
- 이때부터 여러 가지
Architecture가 등장했다.- 이때 밥 아저씨가 여러 가지
Architecture가 비슷한 형식들이라고 생각했다.- 모바일도 새로운 기술들이 발전하면서
MVVM기능이 나왔고 점점 기능이 많아지면서Clean Architecture도입하게 됐고 이후에Flutter이라는 프레임 워크가 나왔다.