Computer Science/Software Design 11

Software Design : Object, DTO, VO 비교하기

PS. 셋은 엄밀히 말하면 다른 용어입니다. 제가 알아본 바에 따르면 VO의 불변성에 의해 Setter를 쓰지 않는 것이 원칙이지만, 실무에서 간혹 VO(값 객체)에 Setter를 사용하기도 하는 것을 확인했습니다. 그리고 그렇게 했을 때 사실상 클래명만 VO로 하는 경우도 많아 프로그램이 동작하는 데에도 차이가 없었습니다.  Object : 엔터티(데이터베이스에서의 용어), 객체(프로그래밍에서의 용어) VO(Value Object) : 값 객체, 불변 객체불변성(Immutable) : Setter와 같은 가변 로직이 없는 불변 상태여야 한다.동등성(Equality) : VO 객체의 주소 값이 다르더라도 값이 같다면 동등한 객체로 판단한다.자가 유효성 검사(Self-Validation)// VO (Val..

디자인 패턴의 종류 (2) Factory Pattern

➡️ 팩토리 패턴 (Factory Pattern)객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화하는 디자인 패턴이다. 즉, 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 형태를 갖는다.public abstract class RobotFactory { abstract Robot createRobot(String name);}public class SuperRobotFactory extends RobotFactory { @Override Robot createRobot(String name) { switch(name) { case "super" : return new SuperRobot(); case "pow..

디자인 패턴의 종류 (1) Singleton Pattern

➡️ 싱글톤 패턴 (Singleton Pattern)객체지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나로, 하나의 클래스에 대해 프로그램의 전체서 하나의 인스턴스만 가지는 소프트웨어 설계 패턴이다. 여러 개의 인스턴스로 만든다는 것의 의미는 메모리에 여러 번 각기 다른 인스턴스를 할당하는 것을 의미하는데, 그러지 않고 한 번만 메모리를 할당하여 여러 클래스에서 이를 공유하여 사용하는 방식이다. 하나의 인스턴스를 만들어 놓고 다른 여러 모듈에서 사용하기 때문에 인스턴스 생성 비용이 줄어드는 장점이 있는 반면, 의존성이 높아진다는 단점이 있기 때문에 이를 고려하여 해당 패턴을 사용해야 한다. 이러한 생성 비용이 중요한 데이터베이스 연결 모듈에 많이 사용되는 패턴으로 가장 많이 사용되는 디자인 패턴..

아키텍처 패턴의 종류 (5) MVC Pattern

국내에서 주로 많이 사용하는5가지 아키텍처 패턴 中 하나(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns)  MVC 패턴은 Spring, SpringBoot 프로그램 개발할 때 자주 사용된다. MVC의 M, V, C는 각각 Model, View, Controller를 의미한다.  순서대로 M, V, C 차례로 살펴봐도 좋지만 보다 쉬운 이해를 위해 View부터 살펴보자.  ➡️ View(뷰)UI를 정의하는 클래스를 가리킨다. 때문에 View를 애플리케이션의 `데이터를 보여주는 방식`을 정의한다고도 표현한다, CF. UI( User Interface, 사용자 인터페이스 ) : 웹 페이지의 화면을 뜻하며 사용자가 개발된 애플..

아키텍처 패턴의 종류 (4) Sense-Compute-Control Pattern

국내에서 주로 많이 사용하는5가지 아키텍처 패턴 中 하나(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns)    일정한 시간 별로 센서의 값을 읽어 들이는 Sense와 센서의 값을 계산하여 해야 할 행위를 정의한 compute, actuator에 해야 할 기능이나 행위를 전달하는 control로 모듈을 구분하는 패턴을 말한다. 임베디드 애플리케이션을 개발할 때 주로 사용되는 패턴이다.   아키텍처 패턴은 지속적으로 발표되고 있고 웹과 서적을 통해 공유하고 있다. 또한 대부분의 아키텍트나 설계와 구현을 오래한 엔지니어들은 자신들의 경험을 정리한 패턴들을 갖고 있다. 중요한 것은 이러한 경험들을 재사용할 수 있도록 체계적으로..

아키텍처 패턴의 종류 (3) State-Logic-Display Pattern (3-tier)

국내에서 주로 많이 사용하는5가지 아키텍처 패턴 中 하나(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns) 비즈니스 애플리케이션을 개발할 때 가장 일반적으로 사용되는 패턴으로 사용자 인터페이스(UI)와 비즈니스 로직, 데이터를 구분하여 변경 용이성이 좋다. 게임, 웹 어플리케이션 등 많은 분야에서 사용되고 있다.

아키텍처 패턴의 종류 (2) Broker Pattern

국내에서 주로 많이 사용하는5가지 아키텍처 패턴 中 하나(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns)   외부에 분산된 컴포넌트를 호출하려고 할 때 클라이언트 request의 분석하여 서버 컴포넌트에 전달하고 그 결과 값을 전달하는 역할을 하는 패턴을 브로커 패턴이라고 한다.보안이나, 안정성을 높일 수 있는 패턴이다.

아키텍처 패턴의 종류 (1) Layered Pattern

국내에서 주로 많이 사용하는 5가지 아키텍처 패턴 中 하나(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns) 작성일 : 20230729, 20230730, 20230813, 2024.08.08➡️ 레이어드 패턴 (Layered Pattern)계층화 패턴이라고도 부른다. 이 아키텍처는 시스템을 여러 계층으로 나누어, 각 계층이 특정한 역할을 수행하도록 하는 소프트웨어 아키텍처 패턴의 한 종류이다. 레이어드 아키텍처의 주요 장점은 계층 간의 역할이 명확히 분리되어 있어, 시스템의 유지보수와 확장이 용이하다는 것이다. 또한, 각 계층은 독립적으로 개발될 수 있으므로 팀 간의 협업에도 유리하다. layer 1 (최상위 레이어)..

Software Design : 디자인 패턴

➡️  디자인 패턴자주 발생하는 문제들에 대한 일반적인 해결책설계 단계에서 만들어진 뼈대 안에서 코드를 어떻게 잘 작성할 것인가?에 대한 문제   ✅ 디자인 패턴이란? 디자인 패턴은 설계 이후 실제 코딩을 하는 단계에서 자주 발생하는 문제 즉, 패턴처럼 매번 등장하는 문제에 대한해결책을 족보화 시켜놓은 것이다. 달리 설명하자면, 실무에서 프로그래밍을 하면서 특정 이슈에 대한 여러가지 해결책 중에서 개발자가 효과적이라 인정한 사례라고 볼 수 있다. 이러한 디자인 패턴은 일반적인 프로그래밍 과정에서도 사용되지만 라이브러리나 프레임워크를 구성하는 데에도 사용된다.   ✅ 디자인 패턴을 사용하면 뭐가 좋을까?우리는 사실 디자인 패턴을 사용하지 않고도 그 문제를 해결할 수 있다. 그러나 디자인 패턴을 사람들이 애..