본문 바로가기

교육후 개인공부/Computer Science16

[CS] DI, DIP DI(dependency injection) -의존성주입(DI)이란 메인 모듈이 '직접' 다른 하위 모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자가 이 부분을 가로채 메인모듈이 '간접'적으로 의존성을 주입하는 방식이다. -이를 통해 메인 모듈과 하위모듈간의 의존성을 조금 더 느슨하게 만들수 있으며 모듈을 쉽게 교체 가능한 구조로 만든다. -A가 B에 의존한다 = B가 변하면 A에 영향을 미치는 관계 = A -> B 의존관계역전원칙 -의존성 주입을 할때는 의존관계역전원칙(DIP, dependency inversion principle)이 적용된다. *이는 2가지 규칙을 지키는 상태를 말한다. -상위모듈은 하위 모듈에 의존해서는 안된다. 둘다 추상화에 의존해야 한다. -추상화는 세부사항에 의존해서는 .. 2024. 1. 28.
[CS] 디자인패턴 디자인패턴 -프로그램을 설계할때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할수 있도록 하나의 규약형태로 만들어 놓은 것을 의미한다. -라이브러리나 프레임워크를 만드는데 기초적인 원리가 된다. -협업시 문제가 발생하면 빠른 의사소통이 가능해진다. -생성패턴, 구조패턴, 행동패턴 3가지로 나눠진다. *생성패턴 -객체 생성 방법이 들어간 디자인패턴이다. -싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입패턴 *구조패턴 -객체, 클래스 등으로 큰 구조를 만들때 유연하고 효율적으로 만드는 방법이 들어간 디자인패턴이다. -프록시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트패턴 *행동패턴 -객체나 클래스 간의 알고리즘, 책임 할당에 관한 디자인패턴이다. -이터레이터, 옵저버, 전략,.. 2024. 1. 27.
[CS] 추상화 추상화 프로그래밍에서의 추상화는 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법을 말한다. 데이터 추상화 데이터들의 공통점을 모으고 차이점은 버림. ex) 고양이, 강아지, 원숭이 등의 객체들의 공통적인 특징을 묶어 동물이라는 카테고리로 카테고리화 시킨다. 프로세스 추상화 어떠한 내부 프로세스를 숨기는 것을 말한다. 예를 들어 데이터베이스가 어떻게 데이터를 저장하는지는 모르지만 단순하게 insert, upsert 등의 쿼리로 데이터를 저장할수 있다. 2024. 1. 26.
[CS] 오버로딩, 오버라이딩 오버로딩 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말한다. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스내에서 사용한다. 오버라이딩 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의하는 것을 말한다. 상속 관계 클래스에서 사용되며 static, final로 선언한 메서드는 오버라이딩이 불가능하다. 2024. 1. 26.