디자인 패턴과 프레임워크
15. 디자인 패턴과 프레임워크 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부른다. 디자인 패턴의 목적은 설계를 재사용하는 것 디자인 패턴은 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계의 묶음 디자인 패턴이 설계를 재사용하기 위한 것이라면 프레임워크는 설계와 코드...
15. 디자인 패턴과 프레임워크 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부른다. 디자인 패턴의 목적은 설계를 재사용하는 것 디자인 패턴은 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계의 묶음 디자인 패턴이 설계를 재사용하기 위한 것이라면 프레임워크는 설계와 코드...
14. 일관성 있는 협력 객체는 협력을 위해 존재한다. 협력은 객체가 존재하는 이유와 문맥을 제공 객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것 객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것 재사용을 위해서는 객체들의 협력 방식을 일관성 있게 만들어야 함...
13. 서브클래싱과 서브타이핑 상속의 첫 번째 용도는 타입 계층을 구현하는 것 타입 계층 안에서 부모 클래스는 일반적인 개념을 구현하고 자식 클래스는 특수한 개념을 구현한다. 타입 계층의 관점에서 부모 클래스는 자식 클래스의 일반화(generilization)이고 자식 클래스는 부모 클래스의 특수화(specialization) 상속의 두 번째 ...
12. 다형성 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속은 타입 계층을 구조화하기 위해 사용 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공 최근의 언어들은 상속 이외에도 다형성을 구현할 수 있는 다양한 방법들을 제공하고 있기 때문에 과거에 비해 상속의...
11. 합성과 유연한 설계 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하는 데 비해 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 상속에서 부모 클래스와 자식 클래스 사이의 의존성은 컴파일타임에 해결되지만 합성에서 두 객체 사이의 의존성은 런타임에 해결된다. 상속 관계는 is...
10. 상속과 코드 재사용 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 것 전통적인 패러다임에서 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것 객체지향에서는 코드를 재사용하기 위해 ‘새로운’ 코드를 추가 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 구현 ...
9. 유연한 설계 9.1 개방-폐쇄 원칙 개방-폐쇄 원칙(Open-Closed Principle, OCP): 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 확장에 대해 열려 있다: 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 ‘동작’을 추구해서 애플리케이션의 ...
7. 캐시 웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치 캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여준다. 캐시는 네트워크 병목을 줄여준다. 캐시는 원 서버에 대한 요청을 줄여준다. 페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시는 거리로 인한 지연을 줄여준다. 7...
8. 의존성 관리하기 8.1 의존성 이해하기 변경과 의존성 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가짐 실행 시점: 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 함 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경됨 어떤 객체가 예정된 작업을 정상적으로 수...
6. 프락시 웹 프락시 서버는 중개자 프락시는 클라이언트와 서버 사이에 위치하여 그들 사이의 HTTP 메시지를 정리하는 중개인 6.1 웹 중개자 웹 프락시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인 HTTP 프락시 서버는 웹 서버이기도 하고 웹 클라이언트이기도 함 프락시는 HTTP 클라이언트의 요청을 받게 되므로, 반드시 웹 서...