Clean Software/Design Pattern

    Future 패턴

    스레드는 코드의 실행에 초점이 맞춰져 있고, 그 결과를 받는 시점이 불분명하다. 스레드가 단순히 코드를 실행하는 것에서 끝나는 것이 아니라, 그 실행의 결과를 다른 스레드에서 받기 위한 패턴이다. B 에서 일을 처리한 결과를 C 에 입력해서 처리하고 결과를 받아야 한다고 할때 (체이닝이 필요할때) 메인쓰레드에서는 B 의 결과를 기다렸다가 C 에게 넣어주고 또 C 의 결과를 기다리는 것보다 (비록 멀티쓰레드 프로그래밍을 하고는 있다지만 먼가 답답하다) 메인쓰레드는 그냥 모든것을 잊어버리고 자기 주력의 일을 하고, B 에게 던진일은 알아서 B -> C-> Somthing 이 되게 한다면 효율적일 것이다. 웹어플리케이션으로 얘기하자면 클라이언트의 요청을 받는 놈은 계속 받는일에만 신경쓰고, (요청이 어떻게 처..

    [디자인 패턴] Iterator(반복자 패턴)

    Iterator 🔔 Intent 기본 표현(목록, 스택, 트리 등)을 노출하지 않고 컬렉션의 요소를 탐색할 수 있습니다. Lets you traverse elements of a collection without exposing its underlying representation (list, stack, tree, etc.). 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴 반복자 패턴은 컬렉션을 반복하는 표준 방법을 제공합니다. 정렬된 개체 그룹을 보유하는 클래스 또는 구조체가 있고 "for in" 루프를 사용하여 반복 가능하게 만들고 싶을 때 반복..

    디자인 패턴(Design patterns) - 적절한 디자인패턴 선택방법과 사용법

    적절한 디자인 패턴을 찾기 위한 접근방법 20여개가 넘는 디자인패턴중에서 특정 설계문제를 해결하기위한 적절한 디자인패턴이 무엇인지 찾기란 여간 어려운일이 아닐 것 같아요. 내가 발생한 문제에 적합한 디자인 패턴을 찾기 위한 몇가지 다양한 접근방법이 있습니다. 1. 디자인 패턴이 설계 문제를 해결하는 방법을 고려하자 디자인 패턴이 적절한 객체를 찾고, 객체 세분성을 결정하고, 객체 인터페이스를 지정하고, 디자인 패턴이 설계 문제를 해결하는 다양한 방법을 어떻게 도와주는지 알아야 어떤 패턴을 사용하는것이 좋을지 알수 있습니다. 이전글 참고 2. 디자인 패턴의 존재 의도(Intent) 고려하자 섹션 1.4(8페이지)에는 카탈로그에 있는 모든 패턴의 의도 섹션이 나열되어 있습니다. 각 패턴의 의도를 읽고 문제와..

    디자인 패턴(Design pattern) - 객체지향 개발시 발생되는 어떤 문제를 해결해줄까

    디자인 패턴이 설계 문제를 해결하는 방법 디자인 패턴은 개발자(객체 지향 디자이너가) 직면하는 많은 일상적인 문제를 다양한 방식으로 해결해줍니다. 다음은 이러한 문제 중 몇 가지와 디자인 패턴이 이를 해결하는 방법입니다. 1. 적절한 객체(Object)를 찾아줍니다. 객체 지향 프로그램은 객체(Object)로 구성됩니다. 객체는 데이터와 해당 데이터에서 작동하는 프로시저(procedure: 절차)를 모두 패키지화합니다. 프로지서는 일반적으로 메소드(method) 또는 함수(operations)이라고 합니다. 객체는 클라이언트로부터 요청(request)혹은 메시지(message)를 받으면 작업을 수행합니다. 요청은 작업을 실행할 개체를 가져오는 유일한 방법입니다. 작업은 개체의 내부 데이터를 변경하는 유일..

    디자인 패턴(Design pattern) - 정의 및 분류

    Design patterns aren't the designs people tend to generate initially. They reflect untold redesign and receding as developers have struggled for greater reuse and flexibility in their software. Design patterns capture these solutions in a succinct and easily applied form. 디자인 패턴은 처음부터 작성되는 코드가 아닙니다. 코드들 개발자가 소프트웨어에서 더 큰 재사용과 유연성을 위해 고군분투함에 따라, 계속된 재설계와 후퇴의 과정이 반영 됩니다. 디자인 패턴은 이러한 고군분투가 담겨있는 재사용과..

    Android 아키텍처(Architecture) 비교하기 - MVP, MVC, MVVM

    어떤 아키텍쳐를 선택 기준 깔끔한 코드분리가 가능한가 Testing가능한 구조를 만들 수 있는가 View와 Model간의 관계를 분리할 수 있는가 많은 코드를 손대지 않고, 유지보수 가능한가 Activity / Fragment/Adapter - view/control 역할을 함께한다. (예: OnClickListerner) - Adapter의 경우Control/Model도 가질 수 있다. 안드로이드에서 활용 가능한 Architecture MVC : Model View Control Model + View + Controller Controller : 사용자의 입력(Action)을 받고 처리하는 부분입다. Controller는 View를 선택할 뿐 직접 업데이트 하지 않습니다. (View는 Controll..