전기차충전기
[디자인패턴] 싱글톤(Singleton)
hyeok0724.kim@gmail.com
2022. 5. 22. 17:09
반응형
작성일: 22년 5월 22일
Index
1. 배경
2. Setting 코드
3. FirstPage 코드
4. SecondPage 코드
5. Main 코드
6. 출력결과
1. 배경
- 안드로이드 개발을 하다보면 1번 페이지에서 값을 변경하면 2번 페이지에서 그 값을 그대로 가져와야 하는 경우가 생김. 1번 페이지에서 객체를 생성하고 값을 설정하더라도 페이지가 사라지면서 해당 객체도 사라지기 때문에 값이 보존되지 않음. 이때 사용하는 방법이 싱글톤 패턴이라고 볼 수 있음
- 보통은 통신쪽에서 Socket을 사용할 때 Thread 마다 Socket을 생성하고 연결하면 꼬일 수가 있기 떄문에 싱글톤 패턴을 사용함
2. Setting 코드
- "private static Settings settings = null" 로 선언함으로써 정적변수로 만듬
- getSettings를 통하여 정적으로 선언한 settings를 전달함으로 항상 같은 값을 보내줌
public class Settings {
private Settings(){}
private static Settings settings = null;
public static Settings getSettings() {
if (settings == null) {
settings = new Settings();
}
return settings;
}
private boolean darkMode = false;
private int fontSize = 13;
public boolean getDarkMode() { return darkMode; }
public int getFontSize() { return fontSize; }
public void setDarkMode (boolean _darkMode) {
darkMode = _darkMode;
}
public void setFontSize (int _fontSize) {
fontSize = _fontSize;
}
}
3. FirstPage 코드
- getSettings()를 통하여 이미 선언된 값을 가져옴
public class firstpage {
private Settings settings = Settings.getSettings();
public void setAndPrintSetting() {
settings.setDarkMode(true);
settings.setFontSize(25);
System.out.println("firstpage() -> " + settings.getDarkMode() + " " + settings.getFontSize());
}
}
4. SecondPage 코드
- getSettings()를 통하여 이미 선언된 값을 가져옴
public class secondpage {
private Settings settings = Settings.getSettings();
public void printSetting(){
System.out.println("firstpage() -> " + settings.getDarkMode() + " " + settings.getFontSize());
}
}
5. Main 코드
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new firstpage().setAndPrintSetting();
new secondpage().printSetting();
}
}
6. 출력결과
- 같은 값이 출력됨을 확인함
Referece:
https://www.youtube.com/watch?v=lJES5TQTTWE
반응형