컴퓨터/정보처리기사 SW 공학
| 니앙팽이 - IoC Container | 2 | 의존성 주입과 제어권 역전 (Dependency Injection & Inversion of Contol)
♽ 1. DI & IoC 📄 1. 의존성 주입/관계 주입 (Dependency Injection) 의존 관계를 가지는 방법은 다음 경우가 있겠다. "A.cs 내에서 new()를 통한 객체 생성으로 의존 관계"를 만들수도 있지만. "new()객체를 다른 외부의 코드 B.cs에서 생성하고 A.cs에 주입(객체 전달)"을 하는 방식이 있겠다. 대표적으로 생성자를 통해서, Setter함수를 통해서, 인터페이스 Setter로 일괄 처리가 가능할 수도 있겠다. 여기서 DI(의존성 주입) 이라 함은 후자의 방식이 되겠다. 즉, 1). Injection : 주입을 한다? Caller/Client(A.cs)에서 Service(인스턴스)를 생성하는게 아니라 Injector(B.cs)라는 외부 클래스에서 주입 되는 방식. ..
| 니앙팽이 - IoC Container | 1 | 의존 역전 원칙 (Dependency Inversion Principle)
♽ 0. Dependency Inversion 📄 1. 용어 1). Dependency : 의존성이란? 한 클래스가 다른 클래스를 참조할때 의존성이 있다고 말할 수 있다. A는 B에 의존적이다 Diagram A가 B를 멤버로 가지고 있거나A메소드에서 B를 패러미터로 이용하거나 리턴한다던지.B의 메소드를 사용한다던지어쨌든 A에서 B를 사용하면~ 2). DIP (Dependency Inverse Principle) 좌 : DIP없이 의존한 관계, 우 : DIP를 적용해 추상적인 개념에 의존함 ⓐ 의존 역전 원칙 이란? 구체적인 타입에 직접 참조(의존)를 하는것이 아닌 추상적인 타입을 참조(의존)하자라는 것. (Depend upon abstractions, Do not depend on concrete) 즉,..
| 니앙팽이 - 객체지향(OOP) | 4-9 | 유용한 패턴들 - Subclass Sandbox, Event queue, Object Pool
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 6. 그밖에 Unity에 유용한 패턴1). ✨ Subclass Sandbox ✨ : Behavioral Patterns상위 클래스가 제공하는 기능들을 통해서 하위 클래스에서 행동을 정의한다.ⓐ 특징# abstract & override #protected #subclass실제 구현부, 메인이 되는 객체가 파생클래스다.그럼 상위클래스가 제공하는것은 뭔가?상위 클래스는 하위 클래스가 필요로 하는 기능을 전부 제공할 수 있다.상위 클래스는 하위 클래스용 메소드인 Sandbox 메소드를 제공한다.sandbox 가 의미하는것.추상 원시 메소드.protected로 만들어져 하위 클래스용이라는 걸 분명히 한다.하위 클래스에서 구현할때 아..
| 니앙팽이 - 객체지향(OOP) | 4-8 | 행동패턴 - State pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 5. 행동 패턴클래스와 객체간 서로 상호작용하는 방법이나 책임 분배 방법을 정의 하나의 객체로 수행할 수 없는작업을 여러 객체로 분해하면서 결합도를 낮출수 있음3). State Pattern ⓐ 특징"상태"를 객체화한 패턴이다. 이 상태라는것도 참조가능하다.상태에 따라 객체의 행위 내용을 변경해주는 패턴메인 캐릭터가 가질만한 상태를 생각해보자. jump, walk, run 등등.. 이러한 상태를 손쉽게 switcing 하고 싶을떄. 제안하는 패턴이다.오토마타의 state machine와 관련이 깊다.FSM 유한상태기계의 기초 & 유니티 설계 이론.ⓑ 왜 쓰는가?if 조건절이 많을때 사용하면 유용하다.객체의 상태에 따라 동일한..
| 니앙팽이 - 객체지향(OOP) | 4-7 | 행동패턴 - Observer pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 5. 행동 패턴클래스와 객체간 서로 상호작용하는 방법이나 책임 분배 방법을 정의 하나의 객체로 수행할 수 없는작업을 여러 객체로 분해하면서 결합도를 낮출수 있음2). ✨ Observer Pattern✨ ✨매우 중요하므로 대리자 & 이벤트 에서 정리✨ⓐ 특징이벤트기반 패턴이다. 디커플링에 매우 유용옵서버 패턴은 여러 객체에 자신이 관찰 중인 객체에 발생하는 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 하는 행동 디자인 패턴입니다.ⓑ 왜 쓰는가?옵서버 패턴은 한 객체의 상태가 변경되어 다른 객체들을 변경해야 할 필요성이 생겼을 때, 그리고 실제 객체 집합들을 미리 알 수 없거나 이러한 집합들이 동적으로 변경될 ..
| 니앙팽이 - 객체지향(OOP) | 4-6 | 행동패턴 - Command pattern
📕 4. 객체지향 디자인 패턴 유니티에서 사용하면 좋을 디자인 패턴만 명시한다. 📄 5. Command Pattern 행동 패턴 1. 커맨드 패턴의 특징 함수 호출(요청)을 저장하는 객체 형태로 캡슐화 Excute와 Undo를 캡슐화 하여 관리하는데 유용한 패턴이다. Command라는 추상적인 단위로 ConcreteCommand라는 클래스를 만들 수 있고. 함수호출이란, 리시버에 의존하여 리시버의 함수를 수행한다 라는것. 함수 호출 타이밍 조절 & 로깅 커맨드를 콜렉션(Queue, Stack, List)으로 관리할 수 있다. 실행 타이밍에 순서를 둘 수 있으니 턴제 게임에도 유용하다. 굳이 그 클래스에 정의되지는 않지만. 특정한 로직을 수행하는 메소드를 외부에 정의하도록 하여 함수에 사용될 데이터와 객체..
| 니앙팽이 - 객체지향(OOP) | 4-5 | 구조패턴 - Flyweight pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴3). Flyweight Patternⓐ 특징다수의 유사객체를 사용하거나 조작할떄 유용인스턴스가 필요할 때마다 매번 생성하는것이 아닌 가능한 공유를 통해 사용함으로 메모리를 절약하는 패턴인스턴시에이트를 많이 해야할때, 공유를 통해 오브젝트를 더 가볍게, 메모리를 절약할때 사용한다.ⓑ 왜 쓰는건가?마인크래프트를 생각해보자 매~~~~~~우 많은 블럭들이 있을것이다. 이 마크에서는 텍스쳐를 플라이 웨이트방식으로 구현했다만약 스타같은 게임을 만든다할때. 유닛들은 같은 mesh, texture, maxhelth setting등등 이 유닛들이 모두 단일 오브젝트를 받아 공유..
| 니앙팽이 - 객체지향(OOP) | 4-4 | 구조패턴 - Decorator pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴2). Decorator Patternsⓐ 특징객체의 기본 기능에 추가 기능을 덧붙여 결합 & 장착할 수 있다. 1. 다수의 옷이 가진 각각의 효과를 결합 할 수 있다.즉 객체를 런타임 동안 동적으로 변화시킬수 있다.ⓑ 왜 쓰는가?기능 확장성기존 코드를 수정하지 않고도 데코레이터 패턴을 통해 행동을 확장할수 있다.동적 확장성구성과 위임을 통해서 실행중에 새로운 행동을 추가할 수 있습니다.ⓒ 구성요소Component인터페이스 또는 추상클래스가 된다.기본 기능을 정의한다.ConcreteComponent기본 기능이 되는 인스턴스가 된다. 데코가 붙을 대상Componen..
| 니앙팽이 - 객체지향(OOP) | 4-3 | 구조패턴 - Composite pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴1). Composite Patternⓐ 쓰는 이유?컴포지트 패턴은 앱의 핵심 모델을 트리로 나타낼 수 있는 경우에만 의미가 있다.여러 개체를 동일한 목적으로 사용하고 있으며 각 개체를 처리하는 코드가 거의 동일한 경우 컴포지트를 사용하는 것은 좋은 선택이다.칼이면 휘두루고, 총이면 방아쇠를 당기는등. 컴포지트와 각기다른 객체의 차이를 무시하고 어쨌든 공격한다는 점에서 같은 동작처럼 사용하고 싶을때. Composite should be used when clients ignore the difference between compositions of objects ..
| 니앙팽이 - 객체지향(OOP) | 4-2 | 생성패턴 - Singleton pattern
📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 3. 생성 패턴생성과 참조과정을 캡슐화 하여 객체가 생성되거나 변경되도 시스템에 영향을 크게 받지 않도록 프로그램의 유연성을 더해주는 패턴1). Singleton patternⓔ 구성요소Application : 싱글톤에 접근하는 어떠한 아~무 코드Singletion :private로 싱글톤 인스턴스가 클래스 내부에 포함된다.GetInstance() 로 싱글톤 인스턴스를 static으로 접근한다.ⓐ 특징전역적으로 접근 가능한 객체라 어디에서든지 참조할 수 있다.인스턴스가 오직 단 하나를 상성함을 보장, 불필요한 메모리 낭비를 최소화 할 수 있다 1. 인스턴스가 하나만 있다. 2. 어디서든 문을 열수있다(어디서든 접근 가능)너무..