CS
-
[디자인 패턴][구조 패턴] - 브릿지 패턴CS/디자인패턴 2023. 7. 10. 16:13
1. 브릿지 패턴 상화와 구현을 분리하여 각각 독립적으로 확장할 수 있도록 하는 패턴 구현부와 추상화부를 분리하여 변경에 유연하고 확장 가능한 구조를 만들어줌 사용하는 경우 추상화된 인터페이스와 구현부 간에 독립적인 확장이 필요한 경우 추상화된 인터페이스와 구현부 간의 강한 결합을 피하고자 하는 경우 추상화된 인터페이스와 구현부 간의 변경이 서로 독립적으로 이루어져야 하는 경우 복잡한 클래스 계층 구조를 간소화하고 유연성을 확보하고자 하는 경우 구현 방법 Abstraction 클래스 : 기능의 추상 인터페이스를 정의, 구현자(Implementor) 객체를 참조 Implementor 인터페이스 : 추상화의 인터페이스를 구현하는 구현자 객체 Refined Abstraction 클래스 : 추상화를 확장하여 새..
-
[디자인 패턴][구조 패턴] - 어댑터 패턴CS/디자인패턴 2023. 7. 7. 15:52
1. 어댑터 패턴 호환되지 않는 인터페이스를 가진 두 개의 클래스를 함께 작동하도록 해주는 구조적인 패턴 인터페이스 호환성 문제를 해결하기 위해 사용 사용하는 경우 기존의 클래스를 수정하지 않고 새로운 인터페이스를 사용하고 싶은 경우 이미 존재하는 클래스의 인터페이스를 다른 인터페이스로 변환해야 하는 경우 호환되지 않는 두 클래스 사이의 상호 작용이 필요한 경우 구현 방법 Target : 클라이언트가 사용하려는 인터페이스를 정의 Adaptee : 기존에 존재하는 인터페이스를 가지고 있는 클래스 Adapter : Target 인터페이스를 구현하고 Adaptee를 감싸서 사용하려는 인터페이스와 Adaptee의 인터페이스를 연결 Client : 적응 대상과 Target 인터페이스 사이의 상호 작용을 요청하는 ..
-
[디자인 패턴][생성 패턴] - 빌더 패턴CS/디자인패턴 2023. 6. 19. 01:42
1. 빌더 패턴 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의한 클래스를 별도로 분리해, 서로 다른 표현이더라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 사용하는 경우 생성하는 객체가 Optional한 속성을 많이 가질 때 => 원하는 속성만 설정 가능 생성하는 객체가 속성 값이 많을 때 => 체인 형식으로 설정/ 기본 값 사용 가능 구현 방법 Builder 클래스: 객체의 생성과 속성 설정을 위한 메서드를 정의 체인 형태로 메서드를 호출하여 객체의 속성을 설정 일반적으로 객체의 각 속성에 대한 설정 메서드를 제공 Director 클래스: 객체 생성의 순서와 절차를 관리 Director 클래스는 빌더 객체를 받아서 원하는 순서로 메서드를 호출하여 객체를 생성 객체 생성의 ..
-
[디자인 패턴][생성 패턴] - 프로토타입 패턴CS/디자인패턴 2023. 6. 13. 14:37
1. 프로토타입 패턴 객체를 생성하는데 비용이 많이 들고, 비슷한 객체가 이미 있을 때 사용되는 패턴 원본 객체를 새로운 객체에 복사하여 필요에 따라 수정하는 메커니즘을 제공하는 패턴 사용하는 경우 종류가 너무 많아 클래스로 정리할 수 없는 경우 => 소스파일을 줄일 수 있다 클래스로부터 인스턴스 생성이 어려운 경우 => 이미 한번 복잡한 과정을 거쳐 만들어진 인스턴스 활용 가능(과정 생략) 프레임워크와 생성하는 인스턴스를 분리하고 싶은 경우 => 등록된 인스턴스를 복사해서 생성하기 때문에, 프레임워크와 분리 구현 방법 Java의 경우, Java에서 제공하는 Clone 메소드와 Cloneable 인터페이스를 사용해 구현한다. 예제 Product 인터페이스 = Prototype Mananger 클래스 = ..
-
[Network] HTTP Protocol에 대하여CS/Network 2023. 6. 9. 19:45
아무렇지 않게 사용하던 HTTP 프로토콜에 대해 더 자세히 알아보고 사용하고 싶은 생각이 생겨, 글을 작성한다. HTTP 프로토콜이란 Hypertext Transfer Protocol의 약자로, 웹에서 클라이언트와 서버 간 통신을 위해 사용되는 통신 규약 HTTP는 웹 브라우저와 웹 서버 간의 데이터 전송 방식을 정의하고 있으며, 인터넷에서 가장 널리 사용되는 프로토콜 중 하나이고 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 작동 방식 HTTP 프로토콜은 요청(Request)과 응답(Response)으로 구성된다. 클라이언트는 HTTP 요청 메시지를 서버로 전송하고, 서버는 해당 요청에 대한 응답 메시지를 클라이언트에게 반환한다. 이러한 요청과 응답은 특정 규칙과 형식을 따르며, 다양한 ..
-
[디자인 패턴][생성 패턴] - 싱글톤 패턴CS/디자인패턴 2023. 5. 20. 16:28
1. 싱글턴 패턴 생성 패턴 중 가장 많이 주목받는 패턴, 자원 공유를 위해 객체 생성 개수를 1개로 제한한다. 선언된 클래스를 객체로 생성하는 과정 = 인스턴스화 인스턴스화는 선언된 클래스를 기반으로 객체를 생성해 메모리에 할당한다. (new 키워드를 이용해 인스턴스화 진행) 이 때, 동일한 객체를 무제한으로 생성할 수 있다. 그러나, 이것이 단점이 될 수도 있다. 하나의 클래스에서 동일한 A,B 객체가 생성되었을 때, 두 개의 객체는 서로 다른 메모리에 생성된 다른 객체이다. 따라서, 객체가 동일하지 않으므로 별도의 C 객체가 접근했을 때 객체의 상태값을 공유하면 안된다. 1. 예시 응용 프로그램에서 전역 변수, 공용 장치 등은 하나의 객체만 필요한 경우가 많다. 예를 들어 여러 대의 프린터가 연결되..
-
[디자인 패턴][생성 패턴] - 팩토리/팩토리 메서드/추상 팩토리 패턴CS/디자인패턴 2023. 5. 16. 18:33
생성 패턴 : 객체를 만드는 절차를 추상화하는 패턴 => 객체 간 강력한 결합 관계를 느슨한 결합으로 변경하는 패턴 객체지향 프로그램을 실행하기 위해서는 클래스를 선언하고 객체를 생성해야 한다. 대표적으로 new 키워드를 통한 방법이 있다. 이 때, 작성 로직에서 직접 객체를 생성하고 관계를 설정하면 개체 간에 매우 강력한 결합 관계를 갖게 되는데, 이는 확장과 유지 보수를 어렵게 하는 원인이 된다. 생성 패턴의 종류 팩토리 패턴 싱글턴 패턴 팩토리 메서드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 이제 각각의 생성 패턴들에 대해서 자세히 알아보자! 1. 팩토리 패턴 생성 패턴 중에서 가장 기본이 되는 패턴, 클래스의 객체 생성 처리를 위임한다. 객체 생성을 위임할 수 있는 클래스를 정의 뒤의 팩..
-
[디자인 패턴] - GoF 패턴CS/디자인패턴 2023. 5. 9. 17:43
정보처리기사를 준비하면서, 주의 깊게 살펴볼 수 있었던 GoF 패턴을 정리해보려 한다. 디자인 패턴이란? 우선, GoF 패턴에 대해서 알아보기 전에 디자인 패턴의 개념부터 정리하면 디자인 패턴 : 프로그래밍할 때에 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어 재이용하기 편리하게 만든 일정한 패턴 이고 GoF 패턴은 이 디자인 패턴의 종류 중 대표적인 방식이라고 생각하면 될 것 같다. 디자인 패턴을 사용했을 때의 장단점 - 장점 : 개발자 간의 원활한 의사소통 소프트웨어 구조 파악 용이 재사용을 통한 개발 시간 단축 설계 변경 요청에 대한 유연한 대처 - 단점 : 객체지향 설계/구현 위주로 사용된다. 초기 투자 비용 부담. GoF(Gang of Four) 패턴 GoF 패턴의 경우, 생성, 구조,..