본문 바로가기
반응형

IT 개인 공부95

빌더 패턴(Builder Pattern) 빌더 패턴은 생성(Creational) 패턴 중 하나로써 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. ​간단하게 얘기하면 복잡한 객체를 생성하는 과정을 추상화하여 서브 클래스에게 넘겨 서브 클래스에서 객체를 생성하도록 하는 디자인 패턴이다. ​ 빌더 패턴의 구조는 다음과 같다. Director : 내부적으로 Builder 인터페이스 객체를 통해 Product를 생성하는 클래스 Builder : Product에 필요한 기능을 가지는 인터페이스 ConcreteBuilder : Builder 인터페이스를 상속받아 구체적으로 기능을 구현하고 Product를 생성하는 클래스 Product : 생성해야 할 복합 객체 ​간단한 예시를 통해 .. 2021. 7. 27.
프로토타입 패턴(Prototype Pattern) 프로토타입 패턴은 생성(Creational) 패턴 중 하나로써 생성할 객체들의 타입이 프로토타입인 인스턴스로부터 결정되도록 하며, 인스턴스는 새 객체를 만들기 위해 자신을 복제(clone) 하는 패턴이다. ​프로토타입은 완제품을 출시하기 전에 테스트할 수 있는 시제품, 원형을 의미한다. ​간단하게 얘기하면 객체를 수정하거나 테스트할 때마다 매번 새로운 객체를 생성하지 않고 기존에 만들어놨던 객체(시제품)를 복제하여 필요한 부분만 수정하는 디자인 패턴이다. ​ 프로토타입 패턴의 구조는 다음과 같다. Prototype : 시제품(공통적인 기능)을 정의하는 인터페이스 ConcretePrototype : 시제품을 실제로 구현하는 클래스 간단한 예시를 통해 프로토타입 패턴을 이해해 보자. ​2차원 좌표에 도형을 .. 2021. 7. 27.
팩토리 메서드 패턴(Factory Method Pattern) 팩토리 메서드 패턴은 생성(Creational) 패턴 중 하나로써 상위 클래스에게 알려지지 않은 구체 클래스를 생성하는 패턴이며, 하위 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이다. ​간단하게 얘기하면 상위 클래스에서 객체를 직접 생성하지 않고, 팩토리(공장)라는 하위 클래스에게 위임하여 객체를 생성하도록 하는 디자인 패턴이다. ​팩토리는 결국 비슷한 기능을 수행하는 객체를 만들어내기 때문에 템플릿 메서드 패턴을 활용할 수 있다. ​ 팩토리 메서드 패턴의 구조는 다음과 같다. Product : 팩토리 메서드로 생성할 객체의 공통 인터페이스 ConcreteProduct : 생성할 객체를 구현하는 클래스 Creator : 팩토리 메서드를 정의하는 추상 클래스 ConcreteCreator : 팩토.. 2021. 7. 26.
템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드 패턴은 행위(Behavioral) 패턴 중 하나로써 알고리즘의 구조를 메서드에 정의하고 하위 클래스에서 알고리즘 구조의 변경 없이 알고리즘을 재정의하는 패턴이다. ​간단하게 얘기하면 비슷한 알고리즘을 수행하는 친구들을 각각 별도의 클래스로 구현하지 말고 공통적인 기능을 템플릿이라는 틀(추상 클래스)로 만들어 사용하고 추가적인 기능은 각자 재정의하여 구현하는 방법이다. ​ 템플릿 메서드 패턴의 구조는 다음과 같다. AbstractClass : 템플릿 메서드를 정의하는 추상 클래스, templateMethod()는 operation1(), operation2()를 순서대로 실행하는 메서드 ConcreteClass : 상속받은 AbstractClass의 operation1(), operation.. 2021. 7. 26.
어댑터 패턴(Adapter Pattern) 어댑터 패턴(Adapter Pattern)은 구조(Structural) 패턴 중 하나로써 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 방법이다. ​간단하게 얘기하면 해외여행 갈 때 자주 들고 가는 돼지코 어댑터를 생각하면 쉽다. 우리나라는 220V를 사용하지만 해외여행을 가다 보면 110V를 사용하는 곳도 있을 것이다. 하지만 돼지코 어댑터를 사용한다면 110V를 사용하는 곳에서도 220V를 사용할 수 있다. 이처럼 서로 호환성이 없지만 함께 작동하도록 해주는 것이 어댑터 패턴이다. ​어댑터 패턴의 구조는 다음과 같다. Target : Adapter가 구현하는 인터페이스이며 Client.. 2021. 7. 26.
전략 패턴(Strategy Pattern) 전략 패턴(Strategy Pattern)은 행위(Behavioral) 패턴 중 하나로써 실행 중에 알고리즘을 선택할 수 있게 하는 디자인 패턴이다. 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만드는 방법이다. ​간단하게 얘기하면 클라이언트가 수행하는 어떤 행위(알고리즘)를 클래스 별로 캡슐화하여 필요할 때마다 쉽게 행위를 교체할 수 있도록 해주는 방법이다. 별도의 클래스를 통해 클라이언트와 독립적으로 관리하기 때문에 새로운 기능을 추가하거나 수정한다 하여도 클라이언트는 아무런 영향을 받지 않는다. ​전략 패턴의 구조는 다음과 같다. Context(문맥) : Strategy의 인터페이스를 이용하는 역할, 클라이언트는 Context를.. 2021. 7. 26.
URI vs URL vs URN URI는 Uniform Resource Identifier의 약자로써 인터넷의 자원을 나타내는 고유 식별자를 의미한다. 즉, 인터넷에 존재하는 모든 자원을 식별하기 위한 문자열의 구성을 뜻한다. ​나의 블로그 주소인 https://sorjfkrh5078.tistory.com/ 문자열도 나의 블로그를 식별하는 URI이다. ​ URI와 비슷한 개념으로 URL과 URN이 존재한다. ​URI는 인터넷에 있는 모든 자원을 식별하기 위한 고유 식별자라면 URL과 URN은 URI의 하위 개념으로 이들의 관계를 그림으로 나타내면 다음과 같다. URL은 Uniform Resource Locator의 약자로써 URI 내에서 자원의 위치를 뜻하는 Locator를 의미한다. 즉, 인터넷상의 어떤 자원을 식별할 때 위치로 자원.. 2021. 7. 25.
HTTP 통신 vs Socket 통신 대부분의 웹사이트는 HTTP 프로토콜을 통해 서버에게 원하는 데이터를 요청하거나 전송하는 등의 통신을 수행한다. 하지만 당연히 HTTP 통신말고도 데이터를 주고받는 다른 통신 방식들도 존재할 것이다. ​그중 대표적인 방법이 바로 HTTP 통신과 Socket 통신이다. 두 방식 모두 이 둘의 차이에 대해서 간단하게 정리해보려고 한다. ​ 먼저 언급하면 두 방식의 가장 큰 차이는 클라이언트와 서버의 통신을 유지하는지에 대한 여부이다. 그렇다면 각 방식에 대해서 간단하게 알아보도록 하자. ​ 먼저 HTTP 통신이다. HTTP 프로토콜의 특징 중 하나는 비연결성(Connectionless)이다. 즉, 클라이언트와 서버가 연결되어 클라이언트의 요청에 대해 서버가 응답을 하면 연결을 끊어버린다. 또한, 반대로 서버.. 2021. 7. 25.
JSON(Java Script Object Notation) REST에 대해서 공부할 때 일반적으로 JSON or XML 형식을 통해 자원의 상태를 전달한다고 하였다. 최근에는 데이터를 표현하는데 XML을 대체해서 JSON이 많이 활용되기 때문에 흔히 제이슨이라고 부르는 JSON에 대해 공부 및 정리해보려고 한다. ​ JSON의 정의는 "속성-값 쌍" 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 간단하게 얘기하면 데이터를 저장하거나 전송할 때 자주 사용되는 경량의 데이터 형식이다. JSON은 ​원래 Javascript에서 객체를 만들 때 사용하는 표현식이었지만 독립적인 데이터 포맷이기 때문에 다양한 프로그래밍언어에서 JSON을 사용할 수 있다. 이때 JSON을 쉽게 활용할 수 있도록.. 2021. 7. 25.
반응형