Computer Science/Design Pattern
-
[디자인 패턴] 6. 싱글턴 패턴 (Singleton Design Pattern)Computer Science/Design Pattern 2022. 10. 9. 00:49
싱글턴 패턴 (Singleton Pattern) -DB에 많이 쓰임 싱글톤 패턴은 프로세스 안에서 단 하나의 객체를 갖도록 하는 디자인 패턴 여러 시스템으로부터 공유 가능한 리소스에 접근이 요청될 때 (전역 변수처럼 사용) 오직 하나만 존재해야 하는 경우 객체가 많은 리소스를 필요로 하는 경우 메모리 절약을 위해서 주로 DB에서 값 동시 접근할 때, 한 번에 한 명씩 접근해야 하므로 싱글톤 패턴이 적용된다. 개념 설명 프린터 관리자 만들기 하나의 프린터에 한사람만 접근해야 하는 경우. 제삼자의 외부 접근을 막기 위해 pirvate를 이용한 외부 접근을 막음 (내부에서만 접근) -> 너무 접근 어려운 문제점 발생 프린터 클래스 내부에서 요청받을 수 있는 메서드 추가. 요청에 따른 단 한 사람만 사용 가능 ..
-
[디자인 패턴] 5. 스트래티지 패턴 (Strategy Design Pattern)Computer Science/Design Pattern 2022. 9. 25. 01:49
상속 규칙 피터 코드의 상속 규칙 자식 클래스와 부모 클래스 사이는 역할 수행 관계가 아니어야 한다. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 절대 없어야 한다. 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다. 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 한다. 자식 클래스가 역할, 트랜잭션, 디바이스 등을 특수화해야 한다. (명확하게 정의해야 한다.) 로봇 만들기 상속 관계에서 하위 자식 클래스 attack(), move()에 대한 동일한 메서드 사용. 문제점 attack(), move()의 공격 방법과 이동 방법이 변경되는 경우 코드의 잦은 수정 발생. 부모 클래스의 코드 복사의 비효율..
-
[디자인 패턴] 4. 디자인 패턴Computer Science/Design Pattern 2022. 9. 16. 01:38
디자인 패턴의 이해 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 재사용할 수 있는 훌륭한 해결책을 제시. -> 패턴은 비슷하거나 동일안 양식 또는 유형들이 반복되어 나타나는 의미. 문제와 해결책도 동일한 유형이나 양식을 통해 쉽게 찾을 수 있다. 디자인 패턴 구조 콘텍스트 : 문제가 발생하는 여러 상황을 기술. 패턴이 적용될 수 있는 상황. 문제 : 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술. 제약사항과 영향력도 문제 해결을 위해 고려. 해결 : 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술. 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않고 다양한 상황에 적용할 수 있는 일종의 템플릿 예시..
-
[디자인 패턴] 3. SOLID 원칙Computer Science/Design Pattern 2022. 9. 15. 04:36
SRP (Single Responsibility Principle) - 단일 책임 원칙 객체는 단 하나의 책임만을 가져야 한다. * 책임 : 해야 하는 것, 할 수 있는 것, 해야 하는 것을 잘할 수 있는 것. 객체에 책임을 할당할 때, 작업을 가장 잘할 수 있는 객체에 책임을 할당해야 한다. 즉, 너무 많은 책임을 부여해서는 안된다. 객체는 책임에 수반되는 모든 일을 자신만이 수행할 수 있어야 한다. SRP 준수해야 하는 이유 - 변경 책임은 변경 이유이다. 책임이 많다는 것은 변경될 여지가 많아진다. 책임을 많이 질수록 클래스 내부에서 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성 높아짐 -> 결합도 증가 cf) 설계 원칙을 배우는 이유 : 예측하지 못한 변경사항이 발생하더라도 영향을 덜 ..
-
[디자인 패턴] 2.객체지향 원리Computer Science/Design Pattern 2022. 9. 13. 03:03
추상화 어떤 영역에서 필요로 하는 속성이나 행위를 추출하는 작업 추상화가 가능한 개체들은 개체가 소유한 특성의 이름으로 하나의 집합 class를 이룬다. 추상적 특성인 집합을 구성하는 개체들을 '일반화'하는 것이므로 집합의 요소들에 보편적인 것이다. 추상화 개념을 사용하지 않는 경우 각각의 개체를 구분 -> 비효율적 캡슐화 캡슐화를 통해 높은 응집도와 낮은 결합도를 갖는 설계 필요 -> 요구사항 변경에 유연한 대처 가능 데이터를 직접적으로 다른 클래스나 메소드에서 변화시킬 수 없도록 해당 데이터 private 이용 은닉 -> 캡슐화 내부의 동작 방법을 캡슐 안에 숨기고 사용자에게는 사용 방법만을 노출 일반화(상속) 관계 여러 개체들이 가진 공동된 특성을 하나의 개념이나 법칙으로 성립 시키는 과정 일반화 ..
-
[디자인 패턴] 0. UML의 이해 / 1. 객체지향 모델링Computer Science/Design Pattern 2022. 9. 13. 03:03
0. UML의 이해 UML(Unified Modeling Language) 시스템 개발을 위한 시각적 설계 표기 객체지향 개발 시 산출물을 명세화, 시각화, 문서화하는 데 사용 표준화된 통합 모델링 언어 특징 시각화(Visualization) 언어 - 시각적 형태로 표준화된 다이어그램 표현 명세화(Specification) 언어 - 분석, 설계단계 각 과정에 필요한 모델 정확하게 명세화 가능 구축(Construction) 언어 - 프로그래밍 언어 표현 가능 문서화(Documentation) 언어 - case tool이용 설계한 내용을 자동으로 문서화 가능 통일된 형태의 UML 다이어그램 모델로 표현 시 로직에 대해 이해 가능 -> 생산성 유지보수 ↑ 객체 지향 모델링 객체지향 : 자료구조 중심 객체 설계..