본문 바로가기

Study/Design Pattern

(6)
[Pattern] Factory Method Pattern Factory Method Pattern 부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 함. 즉, 객체를 만들어내느 부분을 서브 클래스에 위임하는 패턴이다. 부모 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 구조 아래처럼 로봇 객체를 만드는 추상클래스가 있다고 가정했을 때, Robot (추상 클래스) - SuperRobot - PowerRobot RobotFactory (추상 클래스) - SuperRobotFactory ModifiedSuperRobotFactory Robot 각각의 클래스는 아래와 같은 구조라고 하면 public abstract class Robot{ public String getName..
[Pattern] Template Method Pattern Template Method Pattern 로직을 단계 별로 나눠야 하는 상황에서 적용한다. 단계 별로 나눈 로직들이 앞으로 수정될 가능성이 있을 경우 더 효율적이다. 즉, 동작 상 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다. 특정 단계들을 다시 정의할 수 있게 해 준다. 조건 클래스는 abstract로 만든다. 단계를 진행하는 메소드는 수정이 불가능하도록 final 키워드를 추가한다. 각 단계들은 외부는 막고, 자식들만 활용할 수 있도록 protected로 선언한다. 예를 들어 A,B,C의 로직이 순서대로 실행되어야 하는 단계로 이루어져 있고 이 단계가 항상 유지되며 순서가 바뀔 일이 없다고 가정해 보았을 때, A,와 C는 변할 일이 없고 설계에 따라 B만 변한다고 해보면 아래와 같이 구..
[Pattern] Singleton Pattern Singleton Pattern 어플리케이션이 시작될 때, 어떤 클래스가 최초 한 번만 메모리를 할당하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴. 즉, 인스턴스가 필요할 때, 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는 것. 생성자가 여러번 호출되더라도 실제로 생성되는 객체는 하나이며 최초로 생성된 이후 호출된 생성자는 이미 생성한 객체를 반환한다. java에서는 생성자를 private로 지정하여 다른곳에서 생성하지 못하도록 만들고, getInstance() 메서드를 통해 받아서 사용하도록 구현한다. 왜 쓸까요? 객체를 생성할 때마다 메모리 영역을 할당받아 사용해야하는데 한번의 new를 통해 객체를 생성한다면 메모리 낭비를 방지할 수 있다. 싱글톤으로 구현한 인스턴스는 전역 이므로 다..
[Pattern] Adapter Pattern Adapter Pattern 클래스를 바로 사용할 수 없는 경우가 종종 있다.(다른 곳에서 개발 or 수정할 수 없을 때) 그렇다면 중간에서 변환 역할을 해주는 클래스가 필요하다 -> 어댑터 패턴 상속을 통해 사용한다. 호환성이 없는 인터페이스를 사용하는 클라이언트 그대로 활용 가능하다. 향후 인터페이스가 바뀌더라도, 변경 내역은 어댑터에 캡슐화 되므로 클라이언트가 바뀔 필요가 없다. 즉 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환해준다.
[Pattern] 디자인 패턴 개요 디자인 패턴 개요 목적 SW의 재사용성, 호환성, 유지 보수성을 보장하기 위함. 특징 디자인 패턴은 특정한 구현이 아닌 아이디어이다. 무조건 적용해야 한다! 가 아니고 추후에 재사용, 호환, 유지 보수시 발생하는 문제를 예방하거나 해결하기 위해 패턴을 만들어 둔 것. 원칙 - SOLID(객체지향 설계 원칙) Robert C. Martin은 5가지 Software design principles을 정의하고 앞글자를 따서 SOLID라고 부른다. Single Responsiblilty Principle : 하나의 클래스는 하나의 역할만 해야한다. Open - Close Principle : 확장(상속)에는 열려있고, 수정에는 닫혀 있어야 한다. Liskov Substitution Principle : 자식이 ..
[WEB] MVC패턴 Web Application Achitecture는 크게 model1, model2로 나뉜다. Model1 구조 view와 logic을 모두 JSP페이지 하나에서 처리하는 구조 Client로부터 요청이 들어오면 JSP페이지는 java beans나 별도의 service class를 이용해 작업을 처리하고 결과를 출력한다. 한 파일에서 그 기능에 대한 logic과 view를 모두 처리하므로 직관적이다. -> 개발시간단축->개발 비용 감소 비슷한 기능을 수행하는 파일이 있다면 그 오류가 어디서 발생했는지 찾기 힘들다 -> 유지보수, 확장이 어려움 Model2 구조 모든 처리를 JSP에서 하는 것이 아니라 Client의 요청에 대한 처리는 servlet, Logic 처리는 java Class, client에게 ..