음 제목이 무척이나 기네요....^^;;
요즘 디자인 패턴에 관해서 공부를 해보려고 패턴을 한번 만들어 봤습니다...
물론 2.0을 베이스로 처음이라 가장 만만한 싱글턴 패턴....
무척 쉽죠...코드도 몇줄안되고 사용하기도 대따시 편한....ㅎㅎ;;;;;;
일단 2.0의 코드를 보신다면
more..
class Singleton
{
private static var _instance:Singleton = null;
private function Singleton ()
{
}
public static function getInstance ():Singleton
{
if (Singleton._instance == null)
{
Singleton._instance = new Singleton ();
}
return Singleton._instance;
}
public function testFunc()
{
trace("테스트 란다...!!")
}
}
fla에서는 Singleton.getInstance().testFunc();
일단 싱글턴 패턴은 오브젝트를 단 하나만 생성해서 한곳으로만 접근을 하기 위한 목적으로 사용이 됩니다.
그래서 생성자에 private로 접근 제한을 걸어주죠...
한마디로
var aa:Singleton=new Singleton(); 이렇게 new 키워드를 이용한 인스턴스의 생성을 원천적으로 막는거죠....
아무튼 사용도 간편해서
Singleton.getInstance().testFunc();
이렇게 클래스명 하고 클래스 인스턴스를 얻어내는 함수를 실행 하고 바로 접근 하려는 변수와 함수에 접근하면 되죠...
음 그냥 _global변수나 함수를 잡아놓고 사용한다고 생각하면 되겠습니다.
그래서 3.0으로 한번 해봤더니.... 생성자 함수에서 에러를 발생시켜 주시더군요....;;;;;;
생성자 함수는 public이 아니면 안된다는 에러와 함께.......;;;;; 음 정식버전에서는 어떻게 나올지 모르겠지만.... 아무튼 당황을 했습죠......;;;;
클래스의 생성자 함수에 private를 걸어서 한번 만들어 보세요...아마..
[Compiler] Error #1153: A constructor can only be declared public.
이런 문구를 만나시게 될겁니다...^^;;; 생성자에 public만 된다는데...--;;;
아무튼 좀 이상하죠..... 아마 접근 제한자가 생성자 함수에 private가 안먹힌 다면 원천적으로 싱글턴 패턴은 사용이 안되게 되는거 겠죠....음;;
제 나름 대로 생각을 해봤지만 생성자에 private가 구현이 안된다면 싱글턴 힘들것 같네요 정식번전이 빨리 나왔으면 좋겠네요...아무튼....--;;;
more..
package
{
import flash.display.Sprite;
//import Singleton;
public class TestDocument extends Sprite
{
public function TestDocument ()
{
//trace("===============");
// Singleton._instance
//var aa:Singleton = new Singleton();
//aa.testFunc();
}
}
public class Singleton
{
private static var _instance:Singleton = null;
private function Singleton()
{
}
public static function getInstance ():Singleton
{
if (Singleton._instance == null)
{
Singleton._instance = new Singleton ();
};
return Singleton._instance;
}
public function testFunc()
{
trace("안되네...-_-~~~")
};
}
}
이 글의 트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다
::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::