• Home
  • About
    • KKsDev photo

      KKsDev

      게임 프로그래머를 목표로 Unity, C#을 공부하고 있습니다.

    • Learn More
    • Email
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

내일배움캠프 14일차 TIL

03 Aug 2023

Reading time ~2 minutes

오늘 공부한 내용

  1. 싱글톤 패턴과 static 클래스

  2. 결합도 란?

  3. C# delegate

  4. C# Array.Copy(), Array.Clone()

nbcbanner

싱글톤 패턴과 static 클래스

어제 싱글톤 패턴에 대해서 공부를 더 해봤었는데

그렇다면 static 클래스와 싱글톤 패턴의 차이점은 뭐지? 라는 의문이 들어서

둘의 차이점을 비교해 봤다.


결국에는 싱글톤 패턴으로 작성된 클래스는 일반 멤버, 메서드도 가질 수 있고

의존성 주입을 사용하기 때문에 클래스 내부에 인스턴스를 생성하는 것 보다는

결합도가 낮지만 static 클래스에 비해서는 결합도가 높다는것을 알게 되었다.

1. 내부에 인스턴스를 생성해서 사용
2. 싱글톤 패턴을 의존성 주입 받아 인스턴스에 접근해서 사용
3. static 클래스의 메소드를 사용

결합도 : 1 > 2 > 3

정리 :

디자인 패턴 - 싱글톤

결합도 란

소프트웨어 설계에서 클래스나 모듈 등의 구성 요소들이 얼마나 강하게 연결되어 있는지를 나타내는 개념

즉, 한 요소의 변경이 다른 요소에게 얼마나 영향을 미치는지를 측정하는 지표


결합도가 높은 경우

장점

- 구현이 간단하고 직접적인 호출이 가능하여 개발이 빠르게 진행
- 클래스 간의 상호작용이 단순하며, 작은 규모에서 편리

단점

-  유지보수가 어려움, 하나의 클래스를 수정하면 의존하는 다른 클래스들도 영향을 받음
-  확장성이 낮음, 새로운 기능을 추가하거나 수정할때 수정이 어려워짐

결합도가 낮은 경우

장점

-유지보수가 용이. 하나의 클래스를 수정해도 다른 클래스에 영향을 줄 가능성이 낮음
- 확장성이 높음. 클래스를 독립적으로 수정하기 편함

단점

- 구현이 복잡해짐. 클래스들의 상호작용을 간접적으로 해야함
- 의존성 주입을 통해 클래스를 관리하고 관계를 설정하는 작업등의 조금 더 많은 노력이 필요하다.


C# delegate

C#의 함수 포인터 문법 delegate에 대해서 공부해 봤다.

delegate는 메서드를 참조하는 참조형 변수로

원하는 반환형과 매개변수로 delegate를 선언하고 객체를 생성하여

같은 형태의 메소드를 참조 한다.

그리고 여러개의 메소드를 참조할 수 있고, 델리게이트를 호출하면

참조중인 메소드가 등록된 순서대로 실행된다.

정리 :

C# 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();

nbcthumbnail



TIL내일배움캠프스파르타 Share Tweet +1