
객체지향, 계층형 아키텍처 패턴
객체 지향 프로그래밍의 핵심 원칙
1) 캡슐화
객체 내부의 세부적인 사항을 감추는 것, 외부로 노출시키지 않도록 만드는 것
ㅤ
2) 상속
상위 클래스의 특징을 하위 클래스에서 물려받아 코드 중복 제거, 코드 재사용 증대
ㅤ
3) 추상화
공통된 부분을 모아 상위 개념으로 새롭게 정의하는 것
불필요한 세부 사항 생략, 코드를 더욱 간결하고 관리하기 쉽게 만드는 원칙
ㅤ
4) 다형성
역할(인터페이스)과 구현 분리
오버라이팅을 통해 특정 서비스의 기능을 유연하게 변경, 확장 가능
ㅤ
객체 지향 설계 5원칙(SOLID)
1) 단일 책임의 원칙(SRP)
하나의 객체는 단 하나의 책임을 가져야 한다.
클래스나 모듈을 변경할 이유가 단 하나 뿐이어야 한다는 원칙
ㅤ
2) 개방-폐쇠 원칙(OCP)
소프트웨어 엔티티 또는 개체는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
기존 코드에 영향을 주지 않고 소프트웨어에 새로운 기능이나 구성 요소를 추가할 수 있어야 함
ㅤ
3) 리스코프 치환 원칙(LSP)
어플리케이션에서 객체는 프로그램의 동작에 영향을 주지 않으면서, 하위 타입의 객체로 바뀔 수 있어야 한다.
부모 클래스와 자식 클래스를 가지고 있다면 두 가지의 클래스 객체를 서로 바꾸더라도 해당 프로그램에서 잘못된 결과를 도출하야 않아야 하는 원칙
ㅤ
4) 인터페이스 분리 원칙(ISP)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
ㅤ
5) 의존성 역전 원칙(DIP)
프로그래머는 추상화에 의존해야 하고, 구체화에 의존하면 안된다.
아키텍처 패턴
소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대 제시
각각의 시스템들과 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함되어 있음
ㅤ
대표적 아키텍처 패턴

계층형 아키텍처 패턴(Layered Architecture Pattern)유지보수성과 확장성 향상시키는 것이 주요 목표계층형 아키텍처 패턴
여러 계층으로 분리하여 관리하는 아키텍처 패턴
ㅤ
각 계층을 명확하게 분리해서 유지, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표
ㅤ
계층화의 핵심 : 각 계층은 높은 응집도, 다른 계층과는 결합도를 최소화
ㅤ