728x90

1. Singleton Pattern이란?

 

- 싱글톤 패턴은 하나의 프로그램 내에서 하나의 객체만을 사용해야하는 상황에 주로 사용된다.

  (즉, 어플리케이션 전체 영역에서 하나의 클래스의 단 하나의 인스턴스를 생성하는 것)

   환경설정 관리 클래스나 커넥션 풀과 같이 pool 형태로 관리되는 클래스로 주로 공통클래스에 사용되는 것이 일반적이다.

 

 ex. 로그인 시 로그인한 사용자 정보를 처음에만 셋팅하는 UserData가 있다고 가정하자. 로그인 후, 로그아웃될 때까지 단 1번만 셋팅하면 되는 데이터인데, 이를 매번 사용할 때마다 새로운 UserData 객체로 생성하게 된다면, 자원 낭비 또는 참조하는 객체의 위치가 꼬이는 일이 발생할 수 있다.

 

2. Singleton 구현에서 주의 할 점

- 생성자를 private로 생성하여, 다른 외부 클래스에서 싱글톤 클래스를 new로 구성하지 못하게 하는 부분이다.

  싱글톤 클래스의 인스턴스를 타 클래스에서 사용하기 위해서는 getInstance()를 호출해야만 한다. 

 

- Java에서 singleton 멤버변수는 static 이어야한다는 것과 Singleton 클래스의 생성자는 private / protected 이어야한다는 것을 꼭 유념해야한다. private 일 경우는 결코 new 를 이용하여 인스턴스의 중복 생성을 방지하는 셈이기도 하나 상속이 되지 않는다는 단점이 있어 protected로 대게 선언한다.

 

 

 

Reference

http://mkil.tistory.com/199

http://tokisum.tistory.com/8

http://jeong-pro.tistory.com/86

728x90

'Dev > Java' 카테고리의 다른 글

RxJava 이해  (0) 2020.02.03
[Java] Java SE, EE, ME, FX의 차이  (0) 2019.10.16
[Java] Calendar 객체 사용시 'set' not working  (0) 2019.09.19
728x90


REST API란?


https://www.youtube.com/watch?v=80PbMwOquJs


https://meetup.toast.com/posts/92


http://bcho.tistory.com/953




728x90
728x90


RxAndroid



https://brunch.co.kr/@yudong/34


위의 링크를 따라하면서 모르는 것 찾아본 결과



1. JackOption?



https://developer.android.com/guide/platform/j8-jack?hl=ko


 Android는 Java 7 언어 기능 일체를 모두 지원하고, Java 8 언어 기능의 경우 버전에 따라 각각 다르게 부분적으로 지원함. 이 페이지에서는 사용할 수 있는 새로운 언어 기능, 이러한 기능을 사용할 프로젝트를 올바르게 구성하는 방법 및 발생할 수 있는 알려진 문제에 대해 설명합니다.

참고: Android용 앱을 개발할 때에는 Java 8 언어 기능을 사용하는 것이 가장 좋습니다. 프로젝트의 소스 및 대상 호환성 값을 Java 7로 유지할 수는 있지만, JDK 8을 사용하여 컴파일해야 합니다.

Java 8 언어 기능에 대한 지원 기능을 사용하려면 Jack이라는 새 컴파일러가 필요합니다. Jack은 Android Studio 2.1 이상 버전에서만 지원됩니다. 따라서 Java 8 언어 기능을 사용하려면 Android Studio 2.1을 사용하여 앱을 빌드해야 합니다.



그런데 따라서 해보니까 "Could not find method jackOptions() for arguments" 컴파일 에러가 났다.


https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html




Jack 툴체인은 지원 중단됩니다. 해당 프로젝트에서 Jack을 사용하는 경우 Android Studio의 기본 툴체인에 내장된 Java 8 지원을 사용하도록 마이그레이션해야 합니다. 

(...)

Jack을 비활성화하고 기본 툴체인으로 전환하려면 모듈의 build.gradle 파일에서 jackOptions 블록을 제거하기만 하면 됩니다.

android {
   
...
    defaultConfig
{
       
...
       
// Remove this block.
        jackOptions
{
            enabled
true
           
...
       
}
   
}

   
// Keep the following configuration in order to target Java 8.
    compileOptions
{
        sourceCompatibility
JavaVersion.VERSION_1_8
        targetCompatibility
JavaVersion.VERSION_1_8
   
}

} 



jackOptions 부분만 제거하니 에러가 사라짐



-------------------------------------------------------------------------------------------------------------------


https://brunch.co.kr/@yudong/35



* for문 없이 반복적인 동작 수행 가능 (이에 대한 방법은 다양)


- range(X,N)  (X부터 N까지)

- map()은 여러개 추가 가능

- subscribe()는 마지막 결과를 출력하기 위함


*람다표현식의 인자 생략 가능

원래: subscribe(text -> guguResult.append(text)) 

생략: subscribe(guguResult::append)



* Java는 객체지향 언어이지, 함수형 언어가 아님.

 Java8에서 람다표현식 같은 함수형 프로그래밍 도구가 추가 되었음




-------------------------------------------------------------------------------------------------------------------

https://brunch.co.kr/@yudong/36





728x90

'Dev > Android' 카테고리의 다른 글

[Andorid] Resource(R.id / R.drawable) 를 문자열로 가져오기  (0) 2019.04.26
[Android] Network 기능 구현 관련  (0) 2018.10.02
[Android] RxAndroid & RxJava  (0) 2018.10.01
Fabric - Crashlytics  (0) 2018.08.10
Listview  (0) 2018.07.03
728x90

RxAndroid


필요성

1) 비동기 통신을 순차적으로 보내고 싶을 때 사용 (A작업 완료 후 B작업 시작을 원할 때)

2) 콜백을 받았을 때, 받는 화면이 사라짐으로 인해 null 에러로 앱이 다운 될 경우

3) 핸들러와 콜백 지옥에 빠져서 디버깅도 힘들고 헷갈림

4) 두개의 비동기 처리가 완료된 후에 결과 값을 합쳐서 하나로 만들고 싶을 경우

5) 버튼을 연타로 눌러서 이벤트가 중복실행되는걸 방지하고 싶을 경우

6) 쓰레드 관리의 어려움이 있을 경우



Ref.

1. http://tiii.tistory.com/15

2. https://brunch.co.kr/@yudong/34


728x90

+ Recent posts