오늘 공부한 내용
-
싱글톤 패턴과 static 클래스
-
결합도
란? -
C#
delegate
-
C# Array.Copy(), Array.Clone()
싱글톤 패턴과 static 클래스
어제 싱글톤 패턴에 대해서 공부를 더 해봤었는데
그렇다면 static 클래스와 싱글톤 패턴의 차이점은 뭐지? 라는 의문이 들어서
둘의 차이점을 비교해 봤다.
결국에는 싱글톤 패턴으로 작성된 클래스는 일반 멤버, 메서드
도 가질 수 있고
의존성 주입
을 사용하기 때문에 클래스 내부에 인스턴스를 생성하는 것 보다는
결합도가 낮지만 static 클래스에 비해서는 결합도가 높다는것을 알게 되었다.
1. 내부에 인스턴스를 생성해서 사용
2. 싱글톤 패턴을 의존성 주입 받아 인스턴스에 접근해서 사용
3. static 클래스의 메소드를 사용
결합도 : 1 > 2 > 3
정리 :
결합도
란
소프트웨어 설계에서 클래스나 모듈 등의 구성 요소들이 얼마나 강하게 연결되어 있는지를 나타내는 개념
즉, 한 요소의 변경이 다른 요소에게 얼마나 영향을 미치는지를 측정하는 지표
결합도가 높은 경우
장점
- 구현이 간단하고 직접적인 호출이 가능하여 개발이 빠르게 진행
- 클래스 간의 상호작용이 단순하며, 작은 규모에서 편리
단점
- 유지보수가 어려움, 하나의 클래스를 수정하면 의존하는 다른 클래스들도 영향을 받음
- 확장성이 낮음, 새로운 기능을 추가하거나 수정할때 수정이 어려워짐
결합도가 낮은 경우
장점
-유지보수가 용이. 하나의 클래스를 수정해도 다른 클래스에 영향을 줄 가능성이 낮음
- 확장성이 높음. 클래스를 독립적으로 수정하기 편함
단점
- 구현이 복잡해짐. 클래스들의 상호작용을 간접적으로 해야함
- 의존성 주입을 통해 클래스를 관리하고 관계를 설정하는 작업등의 조금 더 많은 노력이 필요하다.
C# delegate
C#의 함수 포인터 문법 delegate에 대해서 공부해 봤다.
delegate는 메서드를 참조하는 참조형 변수로
원하는 반환형과 매개변수로 delegate를 선언하고 객체를 생성하여
같은 형태의 메소드를 참조
한다.
그리고 여러개의 메소드를 참조할 수 있고, 델리게이트를 호출하면
참조중인 메소드가 등록된 순서대로 실행된다.
정리 :
C# Array.Copy(), Array.Clone()
사전캠프 팀원들과 코드테스트 코드리뷰를 하면서
Array.Copy() 말고도 Array.Clone()이라는 배열을 복사하는 함수가 있다는 걸 알게되었다.
먼저, Array.Copy()
는 복사된 배열을 저장할 복사본 배열이 준비되어 있어야 사용할 수 있었다.
다른 특징은 Array.Copy()의 경우에 배열을 어디서부터 어디까지 복사할지 지정해줄 수 있다.
즉, 부분 배열을 복사
한다.
Array.Copy()는 static 메서드
여서 인스턴스 생성없이 호출
할 수 있다.
int[] a = { 1, 2, 2, 34, 55, 43 };
int[] b = new int[a.Length];
Array.Copy(a, b, a.Length);
반면에 Array.Clone()
는 Object를 return해주기 때문에
복사본 배열의 준비가 필요없고, 배열 전체를 복사했다.
그리고 return 값이 Object
이기 때문에 배열로 형 변환을 명시
해줘야 한다.
Array.Clone()는 일반 메서드
여서 인스턴스.Clone()으로 호출
할 수 있다.
int[] a = { 1, 2, 2, 34, 55, 43 };
int[] b = (int[])a.Clone();