본문 바로가기
[책 정리] 11장. DIP(Dependency Inversion Principle) : 의존성 역전 원칙 - Clean Architecture -의존성 역전 원칙(DIP)에서 말하는 유연성이 극대화된 시스템이란 소스 코드 의존성이 추상(abstraction)에 의존하며 구체(concrete)에는 의존하지 않는 시스템이다.자바와 같은 정적 타입 언어에서 이 말은 use, import, include 구문은 오직 인터페이스나 추상 클래스 같은 추상적인 선언만을 참조해야 한다는 뜻이다.구체적인 대상에는 절대로 의존해서는 안 된다. DIP 를 논할 때 운영체제나 플랫폼 같이 안전성이 보장된 환경에 대해서는 이를 무시하는 편이다.이들 환경에 대한 의존성은 용납하는데, 변경되지 않는다면 의존할 수 있다는 사실을 이미 알고 있기 때문이다. -우리가 의존하지 않도록 피하고자 하는 것은 바로 변동성이 큰(volatile) 구체적인 요소다.그리고 이 구체적인 요.. 2020. 4. 15.
[책 정리] 5장. 객체 지향 프로그래밍 - Clean Architecture -좋은 아키텍처를 만드는 일은 객체 지향(Object-oriented) 설계 원칙을 이해하고 응용하는 데서 출발한다. 캡슐화? -OO 프로그래밍은 프로그래머가 충분히 올바르게 행동함으로써 캡슐화된 데이터를 우회해서 사용하지 않을 거라는 믿음을 기반으로 한다.OO 를 제공한다고 주장한 언어들이 실제로는 C언어에서 누렸던 완벽한 캡슐화를 약화시켜 온 것은 틀림없다. 상속? -OO 언어가 더 나은 캡슐화를 제공하지는 못했지만, 상속만큼은 OO 언어가 확실히 제공했다.하지만 상속이란 단순히 어떤 변수와 함수를 하나의 유효 범위로 묶어서 재정의하는 일에 불과하다.OO 언어가 완전히 새로운 개념을 만들지는 못했지만, 데이터 구조에 가면을 씌우는 일을 상당히 편리한 방식으로 제공했다고 볼 수는 있다. 다형성? -함수.. 2020. 4. 9.
Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. -동시 실행 설계 자원의 생성과 해체의 빈도를 감소시키기 위해 항상 새로운 스레드를 만드는 것보다 재사용을 권장한다. 필요 이상으로 스레드를 사용하지 않는다. 사용하는 스레드가 많을수록 더 많은 메모리와 프로세서 시간이 소비된다. -App 관점에서 스레드는 UI, 바인더, 백그라운드 thread 로 3가지 유형이 있다. -바인더 스레드는 IPC 에 사용된다.각 프로세스는 Thread pool 을 유지한다.Thread pool 은 종료되거나 재생성되지 않지만, 프로세스 안에서 다른 스레드.. 2018. 3. 17.
[Objective-C] 객체 복사와 저장 [Objective-C] 객체 복사와 저장출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 12. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 13.1. 객체 복사 * 13.1.1. 얕은 복사와 깊은 복사 * 13.1.2. 존이란 -Cocoa 에서 이전에는 동적으로 확보된 메모리 관리를 할 때 존(zone)이라고 부르는 영역을 이용했다.현재(Objective-C 2.0 또는 가비지 컬렉션을 사용할 때) 사용하지 않지만 copyWithZone: 과 같은 함수들의 인수 형태로 형식적으로 남아 있다. -동적으로 메모리 영역이 확보되는 힙(heap)영역에는 주소 공간.. 2018. 1. 5.
[ios] Objective-C 와 Swift 동시에 사용하기 [ios] Objective-C 와 Swift 동시에 사용하기 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html Swift Code 에서 Objective-C 코드 사용하기-Swift Code 에서 Objective-C 코드를 쓰려면, Objective-C bridging header 가 필요하다.Xocde 는 Objective-C app 에서 Swift file 을 추가할 때, 혹은 그 반대일 때 이를 쉽게 만들 수 있도록 도와준다. 이 과정을 통해 만들어진 header 파일은 [productModuleName]-Bridging-Header.h 파일명을 갖는다. 이.. 2017. 12. 2.
[ios/tutorial] Core Data - Creating a Managed Object Model [ios/tutorial] Core Data - Creating a Managed Object Model https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/CoreData/KeyConcepts.html#//apple_ref/doc/uid/TP40001075-CH30-SW1 -model layer 를 관리하는 framework를 core data 라고 부른다.많은 것을 자동화시켜서 제공한다. -Core data 의 schema 는 managed object model 로 mapping 된다. ( NSManagedObjectModel )이 model 은 소위 table 이라고 부르는 entity 들의 집합이다. Creatin.. 2017. 11. 2.
[Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 [Effective Objective-C] #51 initialize 와 load 메서드는 간결하게 만들라 출처 : Effective Objective-C -오브젝티브-C 에서 최상위 클래스인 NSObject 를 상속한 대다수 클래스에는 초기화를 할 수 있는 몇 가지 메서드가 있다.이 메서드들 중 첫 번째는 load 이고 프로토타입은 다음과 같다.+ (void)load -클래스와 카테고리가 런타임에 추가될 때 이 메서드가 딱 한 번 호출된다.이는 클래스 또는 카테고리를 포함하는 라이브러리가 로드될 때, 즉 일반적으로 앱이 처음 실행(launch)될 때 일어난다.하지만 iOS 용 앱일 때만 해당된다.맥 OS X 앱은 동적 로딩(dynamic loading)같은 기능을 자유롭게 쓸 수 있다.그렇기 때문에 앱.. 2017. 10. 19.
[Effective Objective-C] #23 객체 간 통신에 델리게이트와 데이터 소스 프로토콜을 사용하라 [Effective Objective-C] #23 객체 간 통신에 델리게이트와 데이터 소스 프로토콜을 사용하라 출처 : Effective Objective-C -프로토콜은 자바의 인터페이스와 비슷한 기능이다.오브젝티브-C 는 다중 상속을 지원하지 않는다.그래서 프로토콜이 클래스가 구현해야 할 메서드 집합을 정의할 방법을 제공한다.프로토콜은 대부분 델리게이트 패턴을 구현하기 위해 사용한다. -프로토콜을 배워서 사용하면 코드에 사용 방법을 훌륭하게 문서화 할 수 있어 유지 보수하기 훨씬 쉬운 코드를 만들 수 있다. -카테고리 역시 오브젝티브-C 의 핵심 기능 중 하나다.카테고리는 상속을 사용해야 하는 다른 언어와는 달리 클래스를 상속받지 않고 메서드를 추가할 수 있게 하는 기능이다.이 기능은 오브젝티브-C .. 2017. 9. 3.
[android] Annotation Processing 에 대한 이야기 [android] Annotation Processing 에 대한 이야기 http://hannesdorfmann.com/annotation-processing/annotationprocessing101 The Basics -annotation processing 은 compile time 에 annotation 을 확인하여 어떤 action 을 하는 것을 이야기한다. -annotation processing 은 Java 5 부터 가능하다.그러나 사용할만한 API 는 Java 6 에 release 되었다. -annotation processor 는 java code 나 byte code 를 input 으로 받아서 java 파일로 output 을 생성한다.이 생성된 output 은 compile time 에.. 2017. 7. 31.
반응형