분류 전체보기
-
[디자인 패턴] 커맨드 패턴 (Command Pattern)IT, 프로그래밍/Design Patterns 2017. 12. 25. 20:43
커맨드 패턴(Command pattern)을 이용하면, 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러가지 다른 요구사항을 집어넣을 수 도 있습니다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원이 가능합니다. 커맨드 패턴은 식당의 주문 시스템으로 이해 하면 쉽습니다. 주문서로 주문을 하는 식당에 갔다고 생각을 해봅시다. 웨이터는 홀서빙 아르바이트생이라고 생각하셔도 좋습니다 ^^ 1. 자리에 앉아서 주문서를 적어서, 웨이터에게 전달합니다. 2. 웨이터는 주방에 가서 손님에게 받은 주문서를 전달합니다. 3. 주방장이 받은 주문대로 요리를 만듭니다. 주문서는 받은 주문을 캡슐화 하는 역할을 합니다. 웨이터는 주문서의 내용을 전혀 몰라도 됩니다. 그냥 이 주..
-
-
[디자인패턴]싱글턴 패턴(Singleton Pattern)IT, 프로그래밍/Design Patterns 2017. 12. 25. 01:14
싱글턴 패턴(Singleton Pattern) = 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴. 싱글턴 객체는 유일하게 존재 하는 객체입니다. 예를 들면, 레지스트리 설정이라던가, DB 커넥션 객체 등이 여러 개 존재하면 심각한 오류가 발생하거나, 자원이 낭비 될 가능성이 있죠. (예를 들어서 2개의 설정 객체의 인스턴스를 무작위로 참조 하게 된다면.. ) 이런 객체들은 단 하나만 존재하게 해서, 그 객체의 인스턴스만 어디서든 쓸 수 있게 만들어 줘야 합니다. 싱글턴 객체가 이 싱글턴 객체를 어떻게 만들까요? 싱글턴 객체를 만드려면 두 가지의 조건을 만족해야 합니다. 1. 어디서든 접근이 가능하고, 인스턴스를 얻어서 사용할 수 있게 할 것.2. ..
-
[디자인패턴] 추상 팩토리 패턴 (Abstract-Factory Pattern)IT, 프로그래밍/Design Patterns 2017. 12. 10. 19:51
추상 팩토리 패턴 (Abstract-Factory Pattern) 에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정 하지 않고도 생성할 수 있습니다. 이말은 즉, 우리가 팩토리 메소드 편에 보았던 JPStyleBrownShoes, FRStyleRedShoes .. 이런 식으로 추상클래스에 의존 하는 구상 클래스를 만들지 않고도 생성할 수 있다는 뜻이죠. 디자인 패턴을 사용 하지 않았을때는? 123456789101112131415161718192021222324252627282930313233343536373839404142434445class DependentShoesStore { public Shoes makeShoes(String style, String name) ..
-
[디자인패턴] 팩토리 메소드 패턴 (Factory-Method Pattern)IT, 프로그래밍/Design Patterns 2017. 12. 10. 02:22
팩토리 메서드 패턴(Factory method pattern)은 객체지향 디자인 패턴이다. Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 팩토리 패턴을 시작하기 전에.. "new" 라는 것은 구상 객체를 뜻합니다. 구상 객체는 구상 클래스의 인스턴스를 만드는 것이고 공통적인 인터페이스가 아닌 특정 구현을 사용하는 것이죠. 이렇게 구상 클래스를 통해서 객체를 구현 하게 되면 나중에 수정해야 할 상황이 닥치면 모든 구상 클래스를 확인해서 바꾸어야 하는 불상사가 생길 수 있습니다. 12345678910..
-
buddy 프로젝트 하면서 느낀 점 정리IT, 프로그래밍/프로그래밍 일기 2017. 12. 1. 01:14
1. UML 다이얼로그 이용한 설계와 논리 검증이 끝나기 전에 코딩 하지 말자. 2. 다이얼로그 관계도를 프로그램이나, 화이트보드 같은데 그려놓고 바뀌는 부분 있으면 바꾸자 3. 시작 전에 API 문서를 한 번 보고 시작하자 4. 구글링과 스택오버플로우에 의존하기 보다 공식 문서를 먼저 보자 5. 2번 이상 복붙 해야 하는 일이 없도록 하자 6. static을 쓸때 왜 써야 하는지 타당한 이유가 없으면 쓰지 말자 7. 안드로이드에서 context를 넘겨주는 싱글톤은 조심하자 8. 변수이름을 엑셀 파일에 정해 놓자 9. 주석 달기를 생활화 하자 제발 10. 의존성 낮추는게 제일 중요!!!! 결국 목표는 나중에 유지 보수가 편하게 설계하는 것. 11. 나 말고 다른 사람이 유지 보수 한다고 생각하고 코드를 짜자
-
Execution failed for task ':app:processDebugGoogleServices' 에러IT, 프로그래밍/Android 에러 2017. 11. 18. 14:50
Error:Execution failed for task ':app:processDebugGoogleServices'. Please fix the version conflict either by updating the version of the google-services plugin ~~ 이런 에러인데, 에러의 원인은 현재 사용중인 구글 서비스들의 버전이 일치하지 않아서 나는 오류인 것 같다. compile 'com.google.firebase:firebase-storage:10.0.1' compile 'com.google.firebase:firebase-auth:10.0.1' 파이어베이스를 사용하기 위해 app.gradle 에 이렇게 정의 해 놓았고 compile 'com.google.android...