본문 바로가기

분류 전체보기

isEqualToString와 관련 사실 별 생각없이 쓰는 것중에 조금만 신경쓰면 실수를 줄일 수 있는 것들이 있다. 예를 들면 int i = 10; if (i == 10) { // todo.. } 값 체크를 위와 같이 많이 쓴다. 하지만 == 를 = 로 쓰는 실수를 해서 의도치 못한 동작을 할 수도 있다. int i = 10; if (i = 10) { // todo.. } Lvalue 와 Rvalue의 특성만 알아도 실수를 줄이는 코드를 작성 할 수 있다. int i = 10; if (10 == i) { // todo.. } 이렇게 작성할 경우, 빌드타임에 알 수 있게 된다. int i = 10; if (10 = i) { // todo.. } 이러한 실수를 할 수 있는 것 중 비슷한 원리중 하나는 isEqualToString이라는 함수도.. 더보기
GoF 디자인 패턴 22가지(정리), 객체지향 5대 원칙(SOLID) GoF 디자인 패턴 22가지생성 5가지 - Singleton : 오직 하나의 객체를 생성, 어디서든 동일한 방법으로 접근 - Factory Method : 객체 생성에 관련된 가변성을 메소드로 분리 - Absract Factory : 공장도 인터페이스 기반으로 - Prototype : 견본에 의한 생성 - Builder : 동일한 구축 공정, 다른 표현 객체 생성 구조 7가지 - Composite : 재귀적 합성을 통한 복합 객체 구성 - Decorator : 재귀적 합성을 통한 동적인 기능의 추가 - Adpater : 인터페이스의 변경 - Bridge : 구현과 추상을 분리 - Proxy : 기존 요소를 대신하는 클래스 - Facade : 하위 시스템의 복잡함을 단순화 시키는 상위 클래스 제공 - Fl.. 더보기
Proxy Pattern(대리자 패턴) Proxy Pattern(대리자 패턴): 처리 과정이 복잡하거나, 시스템의 리소스를 많이 필요로 하거나 하는 객체가 있을 때,대리자를 두어 간단한 일은 대리자가 처리하고실제 해당하는 객체가 필요할 때 생성하여 처리. ///Virtual Proxy Proxy Pattern의 종류1 Remote Proxy : 원격 객체에 대한 로컬의 대리자 - RMI(Remote Method Invoke) - RPC(Remote 프로시저 Call)2 Virtual Proxy : 많은 비용을 요구하는 객체를 생성하는 경우 프로그램의 로딩 속도가 느려지므로, 대리자를 두어 진짜 필요할 때 생성하는 기법.3 Protection Proxy : 보호가 요구되는 객체에 접근을 통제하는 대리자 Collections.unmodifiedC.. 더보기
Flyweight pattern Flyweight pattern: 속성과 동일한 객체가 다수 생성된다면하나의 객체를 공유해서 사용하자. 방법1. 팩토리를 통한 경량 패턴 구현=> 이건 싱글톤을 사용하는데 이방법 보다는 다른 방법이 낫다 방법2. 정적 팩토리 메소드를 이용한경량 패턴Wrapper Class : Integer, Long, Boolvalues.add(10); -> values.add(Integer.valueOf(10)) Flyweight 패턴에서 주의할 점-> Immutable Object로 제공되어야 한다. Function -> Pure Functionf(x1, x2) -> y: 수학적 함수의 형태를 프로그래밍 적으로 구현하는 것!Pure Function Java8 - 인터페이스를 이용한 경량 패턴. 더보기
브릿지(Bridge) 패턴 사용자가 새로운 기능을 요구하였을 때 인터페이스는 쉽게 변경 될 수 없다.(인터페이스가 변경되면, 다른 자식 클래스도 깨진다.) 브릿지(Bridge) 패턴 - C++에서는 브릿지 패턴을 핌플 이디엄이라고 한다C++ : pImpl idiom(Pointer to Implementation): 사용자가 구현부를 직접 사용하게 하지 말고, 중간층(Bridge)를 도입하면 변화에 쉽게 대응할 수 있다.- 구현부와 인터페이스(추상부, 사용자가 사용하는 클래스)를 분리해서상호 독립적인 변경 확장이 편리하게 한다.- 구현부의 변화 없이 인터페이스를 변경하고, 인터페이스의 변경 없이,구현부를 변경할 수 있다. 브리지패턴은 라이브러리 설계할 때 한번쯤은 고려해 볼 만 하다. 더보기
Facade(퍼사드) 패턴 Facade(퍼사드) 패턴: 하위 시스템의 복잡함을 단순화시켜주는 상위 클래스(중간층을 제공하자)=> 여러 클래스를 사용해서 하나의 작업을 한다면, 그 복잡함을 하나로 묶어 주자. 더보기
책임의 전가 패턴 책임의 전가 패턴 이걸 이용해서 로거를 만들어 보자 WriteMessage(Info/Debug/Error)Logger -> Console -> Mail -> File자기 책임인지 확인하고 다음으로 전달 책임의 전가(Chain of Responsibility): 이벤트 발생시 처리되지 않을 경우 다음객체에게 전달하는 패턴=> 처리할 수 있을 때까지 고리에 따라 이벤트를 전달한다. 이벤트와 이벤트 처리 객체의 결합도를 줄일 수 있다. 자바의 Logger에서도 이렇게 구현됨 또 다른 사용 예OS X 계열의 GUI 라이브러리(코코아, 코코아 터치)- Touch 이벤트(Responder Chain): MyUIView -> UIView -> MyViewController -> UIViewController -> A.. 더보기
Cloneable Cloneable-> 복사 생성자(C++) 객체의 복사가 목적이라면, Cloneable 보다 복사 생성자가 좋다. 더보기
[English]Travel Will Get More Expensive in 2018 기사 읽기 : https://www.cntraveler.com/story/travel-will-get-more-expensive-in-2018 단어 체크 the research arm of the company그 회사의 연구 부문 anticipated기대하던, 대망의 Meanwhile1. (다른 일이 일어나고 있는) 그 동안에2. (두 가지 시점・사건들) 그 동안에3. 한편 drastically과감하게, 철저하게, 급격하게 discrepancy(같아야 할 것들 사이의) 차이, 불일치 on the rise(물가 따위가) 올라, 오름세에 amenities오락시설, 생활 편의 시설 Lie-flat seats완전하게 펼쳐지는 좌석 더보기
오픈소스 라이선스 관련 사이트 오픈소스 라이선스 관련 사이트한국저작권위원회https://www.olis.or.kr/ossw/license/licenseGuide.do 여기서 검사도 할 수 있는 것 같다.다양한 정보가 있으니 꼭 들러서 볼 것 더보기