λΈλ‘κ·Έ λ΄μ κ²μλ¬Όμ PC λ²μ μ μ΅μ ν λμ΄ μμ΅λλ€.
μ λ§ μ€λλ§μ κΈ μ°λ κ±° κ°λ€μ. λ―Έκ΅μμ λμμμ μΌκΈ° μ΄ κ² λ§μ§λ§μΈλ° μ£ΌκΈ°μ μΌλ‘ μ°λ €κ³ νμλλ° 1νκΈ°μ νλ‘μ νΈκ° λ무 λ§μμ λ°λΉ΄μ΅λλ€. κΈ μ°κ³ μλ μ§κΈμ μμ¨μννΈμμ 7μ£Όμ§λ¦¬ μ±μ©μ°κ³ν μΈν΄μ νκ³ μμ΅λλ€. μΈν΄μ μ§ννλ©΄μ νλ¬ν°λ‘ κ°λ°μ νκ³ μλλ° κ°λ°νλ©΄μ μκ²λ κ²λ€, μ 리νλ©΄ μ’μ κ²λ€μ μ μ΄λκ³ μΆμ΄μ μ€λλΆν° μ£ΌκΈ°μ μΌλ‘ ν¬μ€ν
μ ν΄λ³΄λ €κ³ ν©λλ€. (1νκΈ° νκ³ λ‘μ μμ±νκ³ μλλ° μμ§ μμ±μ΄ μλΌμ λΉκ³΅κ°λ‘ ν΄λ¨μ΅λλ€...)
μ±κΈν€
μ±κΈν€, μ 곡μλΌλ©΄ λ€λ€ λ§μ΄ λ€μ΄λ΄€μ λ¨μ΄μΌ κ²λλ€. λ§ κ·Έλλ‘ μ±κΈ, νλμ μΈμ€ν΄μ€λ§ μ‘΄μ¬νλλ‘ νλ κ²μ λλ€. μΈμ€ν΄μ€λ₯Ό νλλ§ κ°μ§κΈ° μν΄μλ μ΄λ»κ² ν΄μΌν κΉμ? 머리 μμ λ μ€λ₯΄λ κ°λ κ·Έλλ‘ κ΅¬ννλ©΄ λ©λλ€. μΈμ€ν΄μ€κ° μμ±λμ΄ μμΌλ©΄ κ·Έκ±Έ λ°ννλ©΄ λ©λλ€.
μ°μ μλ° μ½λλ‘ μ΄ν΄λ³΄κ² μ΅λλ€.
public class Singleton {
private static Singleton _instance;
// μΈλΆμμ μμ±νμ§ λͺ»νλλ‘
private Singleton() {}
public Singleton getInstance() {
if (_instance == null) {
_instance = new Singleton();
}
return _instance;
}
}
privateλ‘ μ μΈνκ³ μΈμ€ν΄μ€κ° μμ±λμ΄ μμΌλ©΄ μ΄λ₯Ό λ°ννκ³ κ·Έλ μ§ μμΌλ©΄ μΈμ€ν΄μ€λ₯Ό μμ±ν©λλ€.
λ²μΈλ‘ μ½νλ¦°μμλ Objectλ₯Ό μ¬μ©ν΄μ μ±κΈν€μ μμ£Ό μ½κ² ꡬνν μ μμ΅λλ€.
object Singleton {}
μλλ‘μ΄λ 곡λΆν λ μμ£Ό μ¬μ©νμκ³ μ£Όλ‘ Retrofitμ μ¬μ©νμ΅λλ€. λ€νΈμν¬ λΌμ΄λΈλ¬λ¦¬μΈλ° κ°μ²΄λ₯Ό λ§€λ² μμ±ν νμκ° μμ΄μ μ΄λ₯Ό Objectλ‘ μ μνκ³ μ¬μ©νμ΅λλ€.
λ€νΈμμλ Factoryλ₯Ό μ¬μ©ν΄μ μ½κ² ꡬνν μ μμ΅λλ€. μ½νλ¦°μμμ λ§μ°¬κ°μ§λ‘ λ€νΈμν¬μ κ΄λ ¨λ ν΄λμ€λ₯Ό μ μν λ μ¬μ©νμ΅λλ€. HTTPμ Headerλ₯Ό μ€μ νλ ν¨μμ GET, POST, PUT, DELETE ν¨μλ₯Ό μ μν HttpManager ν΄λμ€λ₯Ό μ μνλλ° μμ μμμ λ§μ°¬κ°μ§λ‘ κ°μ²΄λ₯Ό λ§€λ² μμ±ν νμκ° μμκΈ°μ μ΄λ₯Ό μ±κΈν€μΌλ‘ ꡬννμ΅λλ€.
class HttpManager {
static final HttpManager _instance = HttpManager._internal();
HttpManager._internal() {
print("ν΄λμ€κ° μ΅μ΄μ μμ±λ λ νλ²λ§ μ€ν\n");
}
factory HttpManager() {
print("μμ±μ νΈμΆ");
return _instance;
}
}
// ... μλ΅ ...
class APIRequest {
final httpManager = HttpManager();
final anotherHttpManager = HttpManager();
}
ꡬνν μ½λ μ€μ μΌλΆλ₯Ό κ°μ Έμκ³ μ΄λ₯Ό μ€ννλ©΄ μλμ κ°μ κ²°κ³Όκ° μΆλ ₯λ©λλ€. _internal()μ ν΄λμ€κ° μ²μμ νΈμΆλ λλ§ μ€νλ©λλ€. μλ°μμμ ν΄λμ€ μ΄κΈ°νλΈλ‘μ²λΌ νμ©νλ©΄ λ©λλ€.
λ μΈμ€ν΄μ€κ° κ°μ μΈμ€ν΄μ€μΈμ§μ λν΄ μλ¬Έμ΄ λ λ€λ©΄ haseCodeλ₯Ό ν΅ν΄ νμΈν΄λ΄ λλ€.
class HttpManager {
static final HttpManager _instance = HttpManager._internal();
HttpManager._internal() {
print("ν΄λμ€κ° μ΅μ΄μ μμ±λ λ νλ²λ§ μ€ν\n");
}
factory HttpManager() {
print("μμ±μ νΈμΆ");
return _instance;
}
}
void main() {
final httpManager = HttpManager();
final anotherHttpManager = HttpManager();
print("");
print(httpManager.hashCode);
print(anotherHttpManager.hashCode);
}
κ°μ μΈμ€ν΄μ€μμ νμΈν μ μμ΅λλ€.
'π» κ°λ° > Flutter' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Flutter / Dart] What is Equatable? (0) | 2022.08.06 |
---|---|
[Flutter] BLoC ν¨ν΄μΌλ‘ μλ λ‘κ·ΈμΈ, Splash Screen ꡬννκΈ° - 1 (0) | 2022.07.26 |
[Flutter] SingleChildScrollView, ListView, ListView.bulider (1) | 2021.08.18 |
4. Column, Row, Expanded (0) | 2021.08.18 |
3. Container, Padding (0) | 2021.08.18 |