Programming/OOP(4)
-
인터페이스 및 분리
의존성 주입을 위해 인터페이스를 구현해야 했는데, 인터페이스는 동일한 목적으로 동일한 기능을 수행하게하는 .. 그런 간단한 기능으로만 알고 있었다. 하지만 직접 구현을 해 본적도 많이 없었고, 정확하게 이 인터페이스가 어떤 역할을 하기 위해 존재하는지에 대한 완벽한 이해가 없었기에 공부하게 되었다. 객체지향 프로그래밍 언어에서 가장 유명한 언어가 자바이므로, 자바로 다시 공부해보기로 했다. 외부 라이브러리 사용을 목적으로 다시 인터페이스를 공부해보고 싶었기에, 문법은 간단하게 다시 봤고, 외부 라이브러리를 사용할 때, 비즈니스 로직과 분리하는 방법을 위주로 살펴보았다. 먼저 인터페이스의 개념, 역할을 다시 한 번알아보았다. 인터페이스 서로 다른 두 개 이상의 독립된 컴퓨터 시스템 구성 요소 간에 정보를 ..
2021.07.19 -
의존성 주입
개발을 하다 보면 외부 라이브러리를 사용해야 할 때가 수도 없이 많이 생긴다. 하지만 그 라이브러리가 Deprecated 되거나, 다른 라이브러리로 교체해야 하는 일이 생기면 어떻게 될까? 극단적으로 코드 처음부터 하나하나 뜯어 고쳐야 할 수도 있다. 이럴 경우, 외부 라이브러리를 가지고, 외부에서 호출할 수 있게 인터페이스를 제공해주는 DI, 즉 Dependency Injection(의존성 주입)하는 것을 만드는 것이다. 개요 Javascript나 JAVA 등여러 다른 언어에서 의존성 분리를 사용하지만 최근에 배웠던 Swift언어로 의존성 분리를 공부해보았다. 의존성 : 함수에 필요한 클래스 또는 참조변수나 객체에 의존하는 것 class A{ var anum: Int = 1 } class B{ var ..
2021.07.19 -
DTO, DAO, VO
DTO ,DAO VO 뭐 이런 말들은 많이 들어는 봤지만 정확히 어떤 역할을 하는지는 잘 모르고 있다. 객체지향을 설계할 때나 데이터를 전달할 때 이런 말은 많이 쓰고 있는 것 같다. 이 용어들의 정의나 역할은 무엇인지, 또 어떨 때 사용되는지, 어떤 차이점들이 있는지 한 번 알아보자. DTO 데이터 전송 객체(Data Transfer Object) 는 프로세스 간에 데이터를 전달하는 객체이다. 프로세스 간 통신이 원격 인터페이스(웹 서비스 등)로 이루어지게 되는데, 호출의 비용이 많다는 점을 동기로 하여 이용하게 된다. 호출 비용이 커서, 호출 수를 줄이기 위해 데이터를 하나의 호출만으로 서비스 되는 객체인 DTO 이용 위에 말들은 너무 어렵고 이해가 잘 안가서 코드로 다시 살펴보았다 public cl..
2021.07.19 -
Reflection 패턴
PHP를 보다가 ReflectionClass라는 것이 나와서 찾아보게 되었다. PHP Manual Page에는 The ReflectionClass class reports information about a class. 라고 나와있다. "ReflectionClass 클래스는 클래스에 대한 정보를 보고한다" 라는 말이다. 리플렉션 오브젝트에 대한 구체적인 클래스 정보 없이도, 오브젝트가 가진 변수나 메소드 등에 접근할 수 있게 하는 것 자바에서의 리플렉션이 가장 큰 특징이라 했으므로, 자바 코드로 한 번 봐야겠다. 클래스가 가진 모든 멤버의 이름을 얻거나 보여줄 수 없고, 자바 클래스가 그 자신을 조사하고 수정하는 것이 다른 언어에서는 볼 수 없다. import java.lang.reflect.Invoca..
2021.07.06