1번문제 : MyClass에서 싱글턴을 통해 YouClass로 숫자 넘기기
2번문제 : YouClass에서 싱글턴을 통해 HeClass로 문자 넘기기
->> 모두 Main에서 함수 호출
**Singleton : 하나의 instance에 접근하여 데이터를 송수신 할 수 있는 Patten
어디서든 호출하면 접근 가능.
public class SingletonClass {
private static SingletonClass sc=null;
public int snumber;
public String str_;
private SingletonClass() {
}
public static SingletonClass getInstance() {
if (sc == null) {
sc = new SingletonClass();
//privat 싱글턴 메서드는 같은 클래스 안에서 수정 가능
//sc가 처음에 생성됐고 두번째부터는 false가 되서 첫번째 들어온 값이 평생감.
}
return sc;
}
}
MyClass
public class MyClass {
private int number;
public MyClass() {//1번
number = 12;
}
/*
public int getNumber() {
return number;
}
*/
public void method() {//1번
SingletonClass sc = SingletonClass.getInstance();
sc.snumber = this.number;//singleton snumber에 마이클래스 number대입
}
}
YouClass
public class YouClass {
private int tag;//1번
private String str1;//2번
/*
public void setTag(int tag) {//1번
this.tag = tag;
}
*/
public YouClass() {//2번
str1 = "싱글톤 넘기기";
}
public void func() {//1번
SingletonClass sc = SingletonClass.getInstance();
this.tag = sc.snumber;
//마이클래스 number로 변한 singleton snumber를 tag에 대입
}
public void method() {//2번
SingletonClass sc = SingletonClass.getInstance();
sc.str_ = this.str1;
}
@Override
public String toString() {//1번
return "YouClass [tag=" + tag + "]";
}
}
HeClass
public class HeClass {
private int num;
private String str2;//2번
public void function() {
SingletonClass sc = SingletonClass.getInstance();
num = sc.snumber;
}
public void func() {//2번
SingletonClass sc = SingletonClass.getInstance();
this.str2 = sc.str_;
}
@Override
public String toString() {//2번
return "HeClass [str2=" + str2 + "]";
}
}
Main
public class mainClass {
public static void main(String[] args) {
MyClass mcls = new MyClass();
YouClass ycls = new YouClass();
HeClass hcls = new HeClass();//2번
/*
int n = mcls.getNumber();
ycls.setTag(n);
*/
//1번
//MyClass에서 YouClass로 가져오기
mcls.method();//sc.snumber = this.number;
ycls.func();//this.tag = sc.snumber;
System.out.println(ycls.toString());//->YouClass [tag=12]
//2번
//YouClass에서 HeClass로 가져오기
ycls.method();
hcls.func();
System.out.println(hcls.toString());//->HeClass [str2=싱글톤 넘기기]
/*
SingletonClass sc = SingletonClass.getInstance();
System.out.println("sc : "+sc);
SingletonClass scTag = SingletonClass.getInstance();
System.out.println("scTag : "+scTag);
//값이 sc와 똑같음.
*/
}
}
'JAVA > 쓸만한 코드' 카테고리의 다른 글
야구게임//memberNumber 코드 리스트/싱글톤 비교 (0) | 2020.06.10 |
---|---|
싱글톤//야구 멤버 (0) | 2020.06.10 |
stack//스택// 원리 코드 (0) | 2020.06.10 |
Map//Baseball 야구멤버 (0) | 2020.06.09 |
HashMap 코드 (0) | 2020.06.09 |