본문 바로가기

디자인 패턴6

디자인 패턴 - MVC 패턴 (Model-View-Controller) MVC는 Model-View-Controller의 약자입니다. Model, View, Controller. 3가지의 형태로 역할을 나누어 개발하는 방법론입니다. 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있도록 하는 것이 장점입니다. Model 애플리케이션이 "무엇"을 할 것인지를 정의합니다. 비즈니스 로직과 데이터를 다루는 영역으로, View나 Controller에 대한 정보를 알면 안됩니다. Model의 상태에 변화가 있을 때, Controller와 View에 통보합니다. 예 : 처리되는 알고리즘, DB, 데이터 등등 View 화면에 무엇인가를 보여주기 위한 역할을 합니다. (UI) 컨트롤러 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것을 보여줍니다. .. 2020. 6. 2.
디자인 패턴 - 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. 1. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스 생성 2. 유사한 행위들을 캡슐화 하는 인터페이스 정의 3. 객체의 행위를 동적으로 바꾸고 싶은 경우, 직접 행위를 수정하지 않고 전략을 바꿔주므로써 행위를 유연하게 확장하는 방법 인터페이스 (MovableStrategy) 아래 예시에서 운송 수단을 정해주는 전략 클래스들을 캡슐화 하기 위한 인터페이스 publ.. 2020. 5. 31.
디자인 패턴 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. - 관찰 대상의 상태가 변화했을 때, 관찰자(Observer)에게 통지하는 패턴 - 상태 변화에 따른 처리를 기술할 때 효과적으로 활용 (MVC 패턴에서 Model과 View의 분리 등..) - Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타낸다. "한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보.. 2020. 5. 30.
디자인 패턴 - 추상 팩토리 패턴 ( Abstract Factory Pattern ) 추상 팩토리 패턴 (Abstract Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 팩토리 클래스에서 서브 클래스를 생성할 때 if-else 문을 쓰지 않아요. => 팩토리 패턴의 조건문으로부터 벗어납니다 - 구현보다 인터페이스를 위한 코드 접근법을 제공 - 서브 클래스를 확장하기 쉽게 할 수 있어요. Super Class (Computer) public abstract class Computer { public.. 2020. 5. 30.
디자인 패턴 - 팩토리 메소드 패턴 (Factory Method Pattern) 팩토리 패턴 (Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 객체 생성 처리를 서브 클래스로 분리하여 처리 => 캡슐화 - 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미뤄요. - 추상화 된 것에 의존하도록, 구상 클래스에 의존하지 않도록 합니다. - 서로 간의 종속성을 낮추고, 결합도를 느슨하게 하며, 확장을 쉽게 합니다. => 예를 들어, PC 클래스에 대해 수정이 일어나더라도, 클라이언트는 알 수 없기.. 2020. 5. 30.
디자인 패턴 - 싱글턴 패턴 (Singleton Pattern) 싱글턴 패턴 (Singleton Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. // 장점 // - 한 번의 new 생성으로 인스턴스를 사용하기 때문에 메모리 낭비 방지 - 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스(static instance)이기 때문에, 다른 클래스의 인스턴스들이 데이터를 공유하기 쉬움 - Android App의 경우, 각 액티비티나 클래스 별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문.. 2020. 5. 30.