Architecture (아키텍쳐) 6

DIP (The Dependency Inversion Principle)

OOP의 핵심 개념 중 하나인 SOLID 중 D에 해당하는 원칙이다. DIP (The Dependency Inversion Principle) High level modules should not depend on low level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. DIP란 위의 내용에 기반을 둔 내용이다. 즉, 상위 레벨의 모듈은 하위 레벨의 모듈에 의존해서는 안되며 그 abstractions에 의존해야한다. 또한, Abstractions은 detail한 내용에 의존해서는 안되며 Detail 또한 Abstract..

GRASP

OO Design Principle 중 가장 널리 알려진 것은 SOLID 원칙입니다. 2021.04.25 - [Architecture (아키텍쳐)/DesignPattern] - SOLID Principle 하지만 GRASP 도 그에 못지 않게 널리 알려져있고 중요한 원칙입니다. GRASP란 무엇일까요? Craig Larman에 의해 만들어졌으며 GRASP는 General Responsibility Assignment Software Pattenrs의 약자로 한국어로 직역해보면 "일반적인 책임 할당 소프트웨어 패턴" 입니다. 즉 GRASP는 상호작용하는 Object에 어떻게 Responsibilities를 할당하는 지에 대한 내용을 담고 있다고 할 수 있습니다. 여기서 Responsibility란 정확히 ..

Factory Method, Abstract Factory (팩토리 메서드, 추상 팩토리)

Factory Method 부모 클래스가 객체를 생성할 수 있는 Interface를 제공하지만 자식 클래스들이 생성될 때, 생성되는 객체의 유형을 변경할 수 있도록 해주는 생성패턴 public interface chair() { createLeg(); } public class woodChair() { createLeg() { ... } } public class goldenChair() { createLeg() { ... } } Abstract Factory 관련 객체들의 구상 클래스들을 지정하지 않고도 그들의 패밀리들을 생성할 수 있도록 하는 생성패턴 예를 들어 아래와 같다. public class RPNCalculator { public int calculate(String input, String..

SOLID Principle

SOLID Principle 이란? SOLID Principle은 RC Martin이 만든 Software Design Principles입니다. 아래와 같은 5가지 원칙의 첫 글자를 따서 만들었습니다. The Single Responsibilities Principle (SRP) The Open-Closed Principle (OCP) The Liskov Substitution Principle (LSP) The Interface Segregation Principle (ISP) The Dependency Inversion Principle (DIP) 이 원칙들은 결국 자주 변하는 것과 변하지 않는 것을 분리하여 자주 변하는 것이 변하는 것을 의존하고 변하는 것이 자주 변하는 것에 의존하지 않는 것에 ..

Gang of Four (Gof) 디자인 패턴

GoF GoF는 DesignPatternsBook 의 저자 4명이 만든 디자인 패턴이라는 것에서 유래했습니다. GoF의 분류 이 Gof 패턴은 목적에 따라 Creational, Structural, Behavioral 3가지로 분류하며, 범위에 따라 Class, Object 2가지로 분류하여 총 6가지의 분류가 있습니다. Creational : 생성 패턴. 객체의 사용과 생성을 분리합니다. Structural : 구조 패턴. Classes나 Objcet를 구성할 때, 상속 등을 이용하여 특정한 생성자를 사용합니다. Behavioral : 행동 패턴. Class의 책임(Responsibilities)을 할당하는 문제에서 Static Relation과 Communcation을 제안하여 사용합니다. 우리가 알..

디자인 패턴 이란?

패턴이란? 디자인 패턴을 보기 이전에 "패턴"이란 것에 대해 알아야 합니다. 패턴이란 "특정 상황(Context)에서 자주 반복되는 비슷한 문제(Problem)에 대한 해결책(Solution)" 을 정의한 것입니다. 영어로는 다음과 같은 정의가 널리 쓰입니다. "A solution to a problem in a context" 왜 이러한 패턴을 사용할까요? 객체지향 프로그래밍은 어렵습니다. 재사용이 가능한 객체지향 프로그래밍은 훨씬 더 어렵습니다. - 경험이 많은 디자이너는 과거에 사용했던 좋은 해결책을 재사용합니다. - 잘 설계된 객체지향 시스템은 패턴을 활용합니다. - 디자이너가 패턴에 대해 이해하고 있으면 생산성이 올라가며 유연하고 재사용이 가능한 결과가 나옵니다. - 다른 개발자와의 커뮤니케이션..

반응형