728x90 CS note/디자인 패턴, 프로그래밍 패러다임5 MVC pattern (Model View Controller) Model View Controller 애플리케이션의 구성 요소를 세 가지 역할로 구분해 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있도록 한 패턴 생기게 된 배경 길어지는 코드의 가독성, 유지보수가 불편해짐 각 코드가 반복되며 코드의 기능별로 패턴을 나누게 됨 장점 단순, 직관적 재사용성과 확장성 용이 각 계층의 변화가 다른 계층에 변화를 일으키지 않아 변동에 유리함. 단점 애플리케이션의 규모가 커지고 복잡해질수록 모델과 뷰의 관계가 복잡 Controller와 View의 강결합 대상 플랫폼에 따라 적용이 불가능할 수 있음 (안드로이드) 안드로이드의 경우 Activity에서 view를 관리하고, 도메인 로직을 사용해야 하므로 controller와 view가 함께 있을 수밖에 없다. MVC.. 2023. 4. 30. strategy pattern (전략 패턴) strategy pattern (전략 패턴) (= policy pattern, 정책 패턴) 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고, 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 객체들이 할 수 있는 행위에 대해 전략 클래스를 생성하는 패턴 인터페이스를 사용해 기본 행위를 정의한 후 객체의 행위를 변경하고싶을 때 직접적으로 행위를 수정하는 것이 아닌, 객체에서만 행위를 변경해 유연하게 확장하는 패턴 결론: 변경시 대응에 용이하도록 변경이 잦은 행위를 추상화하는 것 * 컨텍스트 : 상황, 맥락, 문맥. 어떠한 작업을 완료하는데 필요한 모든 관련 정보. 예제 코드 1 (Kotlin) 장바구니에 물건을 담은 후 각 카드(전략)로 결제했을 .. 2023. 1. 27. factory pattern (팩토리 패턴) factory pattern (팩토리 패턴) 객체를 사용하는 코드에서 생성 부분을 떼어내 추상화한 패턴. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴. 장점 낮은 결합도 상위 클래스와 하위 클래스가 분리되므로 낮은 결합도를 가진다. 확장성 및 유지보수성 증가 객체 생성 로직이 분리되어 수정 시 한 곳만 수정할 수 있다. 예제 코드 (Kotlin) * String의 equals 옵션 ignoreCase : true로 설정할 시 문자열의 대소문자를 구분하지 않고 비교한다. * abstract class (추상 클래스) : 미완성 클래스, 이 자체로 인스턴스화될 수 없는 클래스. * abstract : 상속을 받는 곳에.. 2023. 1. 25. singleton pattern (싱글톤 패턴) singleton pattern (싱글톤 패턴) 하나의 클래스가 하나의 인스턴스만 가지는 패턴. 하나의 클래스를 이용해 여러번 인스턴스화를 시켜 여러 인스턴스를 가질 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스만 만드는 것입니다. 장점 인스턴스 생성 비용 감소 한 번 생성하여 여러 모듈이 공유해 사용하기 때문에 생성 비용이 줄어드는 장점이 있다. 단점 의존성 상승 여러 모듈이 같은 데이터를 공유해 사용하기 때문에 의존성이 상승하는 단점이 있다. DI(Dependency Injection, 의존성 주입)을 통해 결합도를 낮출 수 있다. 메인 모듈이 직접 하위 모듈에 의존성을 주지 않고, 중간에 의존성 주입자를 두어 메인 모듈이 간접적으로 의존성을 주입하는 방식 (Factory.. 2023. 1. 20. 디자인 패턴 및 프로그래밍 패러다임 디자인 패턴이 생겨난 이유와 장점 개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다. 디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다. 따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다. 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어둔 것 즉, 일종의 솔루션 아키텍처 패턴 MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법. MVP MVV.. 2023. 1. 20. 이전 1 다음 728x90