본문 바로가기

소프트웨어6

[6] 싱글턴 패턴 싱글턴 패턴은 인스턴스가 하나 뿐인 특별한 객체를 만들고, 어디서든 접근할 수 있게 하기 위한 패턴입니다. 유일무이한 객체 객체중에는 하나만 있으면 되는 것이 있습니다. 예를 들면 - 쓰레드 풀, 캐시, 디바이스 드라이버 - 대화 상자, 로그 기록용 객체 - 사용자 설정, 레지스트리 설정 등.. 2개 이상인 경우 올바르게 동작하지 않거나 자원을 불필요하게 잡아먹게 되는 경우 객체를 2개 이상을 만들 수 없게끔 설정해주는 패턴이 필요합니다. 싱글턴 패턴은 전역 변수처럼 어디서든 액세스 할 수 있으면서도 필요할 때만 객체를 생성하므로, 항상 상주하는 전역변수보다 더욱 좋은 패턴입니다. 어떻게 만드나요? 아주 간단한 싱글턴을 만들어봅시다. export default class Singleton { privat.. 2020. 11. 5.
[5] 팩토리 메소드 패턴 팩토리 메서드 패턴을 이용하여 불필요한 의존성을 없애는 방법에 대해 알아봅시다. 디자인 원칙중 하나가, 구현이 아닌 인터페이스를 바탕으로 개발하라는 것이였는데요 new를 이용해서 객체를 생성하는 것을 돌아보면 결국 특정 구현을 바탕으로 프로그래밍 하는 것이 됩니다. 어떤 객체를 생성할 때 조건이 붙게 되는 경우가 있을 것입니다. if(picnic){ duck = new MallardDuck(); } else if(hunting){ duck = new DecoyDuck(); } 위와 같이 특정 조건에 대해 서로 다른 구현체를 인터페이스에 대입하려면 저런 식의 조건문이 필요한데요 이런 코드가 있다는 건 결국 변경 혹은 확장할 때 동일한 코드를 다시 확인하고 추가/제거 해야한다는 뜻이 됩니다. 코드에서 구상 .. 2020. 10. 29.
[4] Decorator Pattern 오늘은 데코레이터 패턴에 대해서 간략하게 알아보고 예시를 통해 적용 방식에 대해서 확실히 이해해보는 시간을 가져보겠습니다. 데코레이터 패턴이란, 상속을 피하고 프로그램의 실행중에 동적으로 클래스를 "꾸며" 서로 다른 기능을 만들어내는 패턴입니다. 이 패턴을 알고 나면, 원래 클래스의 코드를 전혀 바꾸지 않아도 해당 객체에 새로운 임무를 부여할 수 있습니다. 문제 상황에 대한 이해 예시 문제 상황은 이렇습니다. 스타벅스 내부 시스템을 만든다고 가정을 하고, 판매하는 음료의 가격을 매기는 시스템을 구성해 봅시다. 음료에 대해 표현하기 위해서, Beverage 라는 클래스를 만들고 Beverage에 들어가는 요소들을 반영하기 위해 Beverage 클래스의 Property로 그 재료를 넣었습니다. 그리고 나서,.. 2020. 10. 28.
[3] Strategy Pattern Strategy Pattern은 "변화하는 로직"을 분리하여 구성하는 방식 중 하나입니다. 이 패턴의 핵심은 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킵니다. 대표적으로 다음과 같은 상황에 Strategy Pattern을 적용합니다. 1. 진짜 변한다 - 비즈니스 로직이 요구사항에 대해 변하는 경우, 이를 유연하게 대응하기 위함 2. 개별 클래스에 대해 달라야 한다 - 동일한 메소드가 개별 클래스에 대해 그 동작이 달라지고, 재사용해야 하는 경우 개별 행위를 클래스로 캡슐화하여, 동적으로 행위를 변경할 수 있게 구성하는 것이 Strategy Pattern입니다. 메소드를 담고 있는 인터페이스를 정의하고 생성자를 통해 그 구현체를 주입하거나, Setter 메소드를 이용해서 동적으로 변경할.. 2020. 10. 25.