본문 바로가기

전체 글175

[생성 패턴] 팩토리 메서드 패턴 (Factory Method Pattern) 이란? 팩토리 메서드 패턴 이란? • 객체를 생성할 때, 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정하는 디자인 패턴 • 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때, 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴 • 다양한 구현체 (Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공 Creator Product 타입의 객체를 반환하는 팩토리 메서드를 선언하는 클래스 팩토리 메서드를 기본적으로 구현, ConcreteProduct 객체를 반환 ConcreteCreator 팩토리 메서드를 재정의하여 ConcreteProduct의 인스턴스를 반환 Product 팩토리 메서드가 생성하는 객체의 인터페이스 정의 ConcreteProduct Prod.. 2022. 5. 26.
[생성 패턴] 싱글톤 패턴 (Singleton Pattern) 이란? 싱글톤 패턴 이란? • 어플리케이션이 시작될 때 어떤 클래스가 최초에 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용 • 인스턴스가 필요할 때 똑같은 인스턴스를 만들지 않고 인스턴스를 활용 • 생성자가 여러 번 호출되어도 실제 객체는 하나이며 최초 생성된 객체를 계속 반환 * 실제로 단 하나만 존재해야만 하는 물건이 있을 때 사용 회사에서 단 하나의 프린터를 공유해서 쓰는 것과 유사하다. 싱글톤 패턴 장단점 장점 • 객체를 한 번만 생성하고 반환하기 때문에 메모리 영역을 한 번만 할당 (메모리 낭비 방지) • 싱글톤으로 구현한 인스턴스는 ‘전역’이므로 다른 클래스의 인스턴스와 데이터 공유 가능 단점 • 싱글톤 인스턴스가 혼자 너무 많은 일을 하거나 공유하면 다른 클래스와의 .. 2022. 5. 26.
[생성 패턴] 빌더 패턴 (Builder Pattern) 이란? 빌더 패턴 이란? • 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. • 복합 객체의 생성 과정을 단계별로 분리함으로써 복합 객체의 생성을 일반화 할 수 있다. • 빌더 패턴의 장점으로 필요한 데이터만 설정 가능, 유연성 확보, 가독성 향상, 불변성 확보가 있다. 빌더 패턴 구조 Builder 객체를 생성하는 추상 인터페이스 Concrete Builder Builder의 구현 클래스. 다른 객체를 생성할 수 있도록 하는 구체적인 클래스 객체를 만들기 위해 부분(부품)을 생성하고 조립한다. Director 객체 생성의 정확한 순서(sequence)를 다루는 부분에 책임이 있다. 이 클래스는 ConcreteBuilder를 인자로 받아서.. 2022. 5. 25.
멀티 프로세스(Multi-Process) 응용하기 with Python 블로그를 참고해서 멀티 프로세스(Multi-Process)를 응용하고자 한다. 멀티 프로세스응용하기 1. 싱글 프로세스를이용한이미지 다운로드 사용할 이미지는 Corey Schafer의 Python Threading Tutorial에서 가져온 15장 이미지를 사용한다. 주어진 이미지는 고해상도 이미지를 사용하며, 다운로드에 약간 시간이 소요된다. import time import concurrent.futures import os from PIL import Image, ImageFilter img_names = [ 'photo-1516117172878-fd2c41f4a759.jpg', 'photo-1532009324734-20a7a5813719.jpg', 'photo-1524429656589-6633a4.. 2022. 5. 19.