흔히 '의존성 주입' 이라고 불리는 'Dependency Injection'은 느슨한 커플링을 위해 많이 사용되는 방식이다. 클래스 A가 어떤 작업을 수행하기 위해 클래스 B의 인스턴스에 의존해야 하는 경우, B는 A의 디펜던시(의존성)이라고 한다. DO THIS! 클래스 A 외부에서 만들어진 인스턴스를 주입받아 참조한다. DON'T DO THIS! 클래스 A 내부에서 클래스 B의 인스턴스를 직접 만들어 참조한다. '포켓몬 고' 개발자들이 설명하는 Dependency Injection
객체지향적 프로그래밍을 할때에는 S.O.L.I.D 라고 불리는 5가지 큰 원리를 따라서 설계를 해야 한다. 이것들은 GRASP(General Responsibility Assignment Software Patterns) 소프트웨어 일반 책임 적용 패턴 9가지로 세분화할 수 있다. S : Single Responsibility Principle 단일 책임 원칙 모든 클래스는 단 하나의 분명한 역할 만을 책임져야 한다. 클래스를 수정할 이유가 단 하나여야 한다. DO THIS! 총 클래스가 있을때, 총은 플레이어가 입력을 할 때마다 총알을 생성한다. 이것이 총 클래스가 할 일의 거의 전부다. DON'T DO THIS! 생성된 총알이 무엇과 충돌하고 어떤 결과를 야기하는 지에 대해서는 전혀 관여하지 않는다...
API? API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 프로그래밍을 하기 위해 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. API 자체는 어디까지나 사양(Specification)만을 정의하기 때문에 구현(Implementation)과는 독립적이다. 예로 Windows의 MFC / Win32, C++의 STL 등이 있다. API가 실제 기능 구현체인 라이브러리와 함께 제공되면 SDK라고 한다.