Computer Science/디자인패턴
[Head First Design Patterns] 07 어댑터 패턴과 퍼사드 패턴
(본 강의 노트는 한빛 미디어의 [Head First Design Patterns]책을 기반으로 하고 있습니다) 07 어댑터 패턴과 퍼사드 패턴 Adapter Pattern & Facade Pattern 07-01. Adapter Pattern 목적 클래스의 인터페이스를 클라이언트가 원하는 형태의 또다른 인터페이스로 변환. 어댑터는 호환되지 않는 인터페이스 때문에 동작하지 않는 클래스들을 함께 동작할 수 있도록 만들어줌 (aka. Wrapper in Java) 어댑터 패턴 정의 디자인 패턴 요소 요소 설명 이름 어댑터(Adapter) 문제 사용 객체의 API가 서로 다름 해결방안 함수를 변환하는 객체를 중간에 넣음 결과 변경 최소화 객체를 감싸는 역할을 함(Object Wrapping) - 서로 호환되지..
[Head First Design Patterns] 06 커맨드 패턴
(본 강의 노트는 한빛 미디어의 [Head First Design Patterns]책을 기반으로 하고 있습니다) 06 커맨드 패턴 Command Pattern 목적 - 요구사항(요청, 명령)을 객체로 캡슐화시킴. 이를 이용해서 다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있고, 요구사항을 큐에 넣거나 로그로 남길 수 있으며 작업 취소(undo) 기능을 지원할 수도 있음 요소 설명 이름 커맨드(Command) 문제 사용 객체의 API가 서로 다름 해결방안 실행과 요청을 분리 결과 작은 클래스가 많아지지만, 객체 사용에 필요한 복잡성을 제거하고 감춤(함수 이름이 동일해짐) 커맨드 패턴 클래스 다이어그램 문제(1) - 홈오토메이션용 리모컨 1. 사용하려는 객체가 많고, API가 서로 다른 경우 - 차..
[Head First Design Patterns] 05 싱글톤 패턴
(본 강의 노트는 한빛 미디어의 [Head First Design Patterns]책을 기반으로 하고 있습니다) 05 싱글톤 패턴 Singleton Pattern 목적 한 클래스는 하나의 인스턴스만을 가짐을 보장하고 해당 인스턴스에 어디서나 접근할 수 있도록 함 자바에서 제공하는 Singleton Instance의 예 java.lang.Runtime.getRuntime() java.lang.Desktop.getDesktop() java.lang.System.getSecurityManager() 요소 설명 이름 싱글턴(Singleton) 문제 여러 객체가 생성되면 상태 관리가 어려움 해결방안 객체 생성자를 중앙 관리 결과 객체가 1개라서 일관된 상태 고전적 싱글턴 패턴 구현법 고전적 싱글턴 패턴 구현 방법..
[Head First Design Patterns] 04 팩토리 패턴
(본 강의 노트는 한빛 미디어의 [Head First Design Patterns]책을 기반으로 하고 있습니다) 04 팩토리 패턴 Factory Method Pattern 목적 Defining an interface for creating an object 객체 생성용 인터페이스 정의 단, 서브클래스가 어떤 클래스를 인스턴스화(객체 생성)할 지 결정할 수 있도록 함. 펙토리 메소드는 객체 생성을 서브 클래스에서 하도록 미룰 수 있게 해줌 Abstact Factory Pattern 목적 : 구체적인 클래스를 명시하지 않고 관련된 혹은 의존적인 객체들을 생성할 수 있는 인터페이스 제공 문제 객체를 생성하는 'new' 의 문제 : new는 인터페이스가 아니라 실제 클래스를 생성 OCP에 어긋남 : not cl..
[Head First Design Patterns] 01 디자인 패턴 소개
(본 강의 노트는 한빛 미디어의 책을 기반으로 하고 있습니다) 01 디자인 패턴 소개 디자인 패턴의 분류 GoF가 디자인 패턴을 23가지로 정리하고 세 가지로 크게 분류( bold 처리 한 부분이 앞으로 자세히 다룰 패턴) 생성 패턴 (Creation Patterns) 객체의 생성 과정과 연관된 패턴 추상 팩토리 (Abstaact Factory) 빌더 (Builder) 팩토리 메소드 (Factory Method) 프로토 타입 (Prototype) 싱글턴 (Singleton) 구조 패턴 (Structual Patterns) : 클래스나 객체의 합성/ 집약에 관련된 패턴 어댑터 (Adapter) 브리지 (Bridge) 컴포지트 (Composite) 데코레이터 (Decorator) 퍼사드 (Facade) 플라..
Introduction Advanced OOP
Advanced OOP-0-Introduction 소프트웨어 왜 문제인가? 소프트웨어 위기 위기의 원인? 소프트웨어 개발 프로세스의 복잡성 소프트웨어 공학의 미성숙 소프트웨어 규모가 커짐 소프트웨어의 품질 품질 문제는 정해진 시간에, 정해진 노력으로, 정해진 요구사항을 해결하지 못함 소프트웨어는 보이지 않기 때문에 품질 판단이 더욱 어려움 소프트웨어의 심각성 소프트웨어가 대형화되면서 더욱 위기가 심각해짐 소프트웨어 대형화로 인한 문제 협업의 문제 : 설계의 중요성 요구사항의 문제 : 요구사항은 계속해서 늘어남 소프트웨어 심각성 소프트웨어 오류의 심각성 눈에 보이지 않아서 오류의 심각성을 중요치않게 생각함 SW 오류로 생명의 손실 발생 가능 ex:) 자율주행사고 경제 손실 발생 가능 좋은 SW란? 좋은 S..
[Head First Design Patterns] 03 데코레이터 패턴
(본 강의 노트는 한빛 미디어의책을 기반으로 하고 있습니다) 03 데코레이터 패턴 Decorator Pattern 목적 객체에 추가적인 책임을 동적으로 부여함. 데코레이터는 서브클래싱(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 함 문제 조금씩 기능을 추가하기 위해 새로운 클래스를 생성하는 경우 상속으로 문제를 풀면 너무 많은 상속 관계가 발생할 수 있음 상속을 사용하지 않고 새로운 기능을 추가할 수 있는가? 디자인 패턴 요소 요소 설명 이름 데코레이터(Decorator) 문제 조금씩 다른 다양한 종류. 늘어날수록 확장 어려움 해결방안 상속을 사용하지 않고 연관으로 필요한 기능 추가. 실행시점 확장 Extension at runtime (not compile time) 결과 확장성..
[Head First Design Patterns] 02 옵저버 패턴
(본 강의 노트는 한빛 미디어의 책을 기반으로 하고 있습니다) 02 옵저버 패턴 옵저버 패턴이란? 목적 객체간 일대다 의존 관계를 정의함 한 개 객체 상태가 변화될 때, 그 객체와 의존 관계에 있는 모든 객체들이 자동으로 알림을 받고 상태를 갱신 옵저버 패턴은 일종의 푸쉬 서비스를 구현 뉴스 뉴스 사이트를 방문해서 매번 새로운 뉴스가 있는지 확인하는 것은 번거로움 구독 서비스를 신청 시, 새로운 뉴스가 있으면 알려주는 것이 편리함 호텔의 모닝콜 서비스 일어날 시간을 확인하기 위해 자다 깨다를 반복하는 것은 어려움 모닝콜을 원하는 시간에 받거나 알람을 맞추는 것이 바람직함 전화번호 프로그램 상황: 정보를 확인하기 위해 마우스로 화면의 버튼을 클릭하는 경우 버튼이 클릭되었는지 프로그램에서 계속 확인하는 것은..