design pattern

반응형

 

우선 dependency injection (Inversion of Control, IoC) 만 언급. 

spring boot jsp mybatis mariadb basic gradle with intellij ultimate lombok

이곳에서도 언급했듯이 프레임워크라 함은 기본적으로 DI 기능을 제공하는 것을 말한다. 조립하듯이 해당 규격에 맞다면 다른 구현체로 갈아 끼울 수 있도록 하는 것을 말한다. 여기에는 Factory Pattern, Stratege Pattern, Dependency Inversion Principal 의 디자인 패턴이 사용될 수 있다. 전략패턴은 인터페이스들 정의하고 로직을 분리하여 사용하고자 하는 곳에서 가져다 사용하는 것이고 DIP 는 사용하고자 하는 곳에서 인터페이스를 정의하고 구현을 다른 곳에서 해주는 것이다. 팩토리 패턴은 객체 생성하는 로직을 분리하여 의존성을 낮추기 위한 패턴.

https://develogs.tistory.com/19

https://medium.com/sjk5766/dependency-injection-ioc-dip-ioc-container정리-310885cca412

https://huisam.tistory.com/entry/DIP

 

 

 

imperative and procedural programming (명령형, 절차지향 프로그래밍)

함수가 얽혀있고 데이터도 다른 곳에서 업데이트 될 수 있고 하나 수정하기 위해 전체를 다 이해해야하고 다른 부수효과가 발생할 수 있는 등 여러가지 면에서 유지보수가 어렵게 만든다.

 

object oriented programming (객체지향 프로그래밍)

프로그램을 객체로 정의해서 객체들끼리 서로 소통하도록 디자인 코딩 하는 것. 서로 관련 있는 함수와 데이터를 여러 객체로 정의해서 프로그래밍 하는 것. 객체 단위로 만들기 때문에 한곳에서 문제가 생기면 관련 있는 객체만 이해하고 수정하면 되고 여러번 반복되는 것이 있다면 관련 객체를 재사용 가능하고 새로운 기능이 필요하면 새로운 객체를 다시 만들면 되어서 코드의 생산성과 품질을 높일 수 있다. 객체는 메소드와 프로퍼티(필드)로 구성된다. 이러한 메소드와 프로퍼티가 있다고 하는 것을 정의하는데 보통 class 를 사용한다.

 

객체지향의 원칙

Encapsulation (캡슐화) 하고 Abstraction (추상화, 내부의 복잡한 기능을 다 이해하지 않고 외부에서 간단한 인터페이스를 통해서 사용할 수 있는 것, 커피머신 버튼 같이) 하고 Inheritance (상속) 을 통해 같은 부모를 가진 여러 객체를 만들 수 있어 코드의 재사용을 높일 수 있고 Polymorphism (다형성) 을 통해 같은 부모를 가진 여러 객체의 공통 기능을 추상적으로 사용할 수 있게 해준다.

 

 

 

 

쓰레드 없는 객체지향 프로그래밍 방식은 UI 개발에 사용하는데 문제가 없을까?

 

JavaFX 나 iOS Storyboard 방식 MVC 의 구조의 개발을 보면 메인 쓰레드에서 UI 의 갱신을 담당한다. 그래서 oop 방식으로 개발을 하여도 UI 의 상태 업데이트가 큰 문제없이 이루어진다.

 

MVVM 이면서 함수형 방식 그리고 useState, useEffect 로 데이터와 메소드와 같은 역할을 하는 부분을 다루는 이러한 개발 패러다임인 React 는 우선 쓰레드 없이 개발이 가능하다.

 

하지만 typescript 도입 후 React 도 oop 방식으로 개발이 되는데 이러한 부분의 경계는 어디인가? oop 와 함수형 그리고 React Component, MVVM 의 조합? 여기서 쓰레드는 없다. 그렇다면 React 의 MVVM 구조와 Component UI 부분에서의 함수형 방식 그리고 전체적인 개발의 방식은 oop 가 되는걸까? 그럼 MVC 구조와 쓰레드 방식의 전통적인 UI 개발 방식과 비교했을 때 React 의 Component 의 함수형 개발 패러다임이 Main 쓰레드 부분을 대체하고 있는 것으로 보면 되는 것일까?

 

 

 

 

추후 계속 추가 필요...

반응형

댓글

Designed by JB FACTORY