using System;
namespace Study09
{
public delegate void DelOnClick();
public class Button
{
public DelOnClick onClick;
public Button()
{
}
public void Click()
{
Console.WriteLine("[Button] 클릭했다.");
onClick();
}
}
}
using System;
namespace Study09
{
public class App
{
public App()
{
Button btn = new Button();
btn.onClick = this.OnClickButton;
btn.Click();
}
public void OnClickButton()
{
//설정 팝업을 연다
Console.WriteLine("[App] 설정 팝업을 연다.");
}
}
}
using System;
namespace Study09
{
public class App
{
public App()
{
Building building = new Building();
building.onComplete = OnComplete;
building.Build();
}
private void OnComplete()
{
Console.WriteLine("[App] 건설 완료.");
}
}
}
using System;
namespace Study09
{
public delegate void DelOnComplete();
public class Building
{
public DelOnComplete onComplete;
public Building()
{
}
public void Build()
{
Console.WriteLine("[Building] 빌딩 건설 시작.");
onComplete();
}
}
}
using System;
namespace Study09
{
public class App
{
public App()
{
FileManager fm = new FileManager();
fm.onOpenComplete = this.OnOpenComplete;
fm.Open("C:\\test.txt");
}
private void OnOpenComplete()
{
Console.WriteLine("파일 열기 완료.");
}
}
}
using System;
namespace Study09
{
public delegate void DelOnOpenComplete();
public class FileManager
{
public DelOnOpenComplete onOpenComplete;
public FileManager()
{
}
public void Open(string path)
{
Console.WriteLine("{0} 위치의 파일을 열었습니다.", path);
onOpenComplete();
}
}
}
using System;
namespace Study09
{
public class App
{
//생성자
public App()
{
Console.WriteLine("App");
SceneManager sm = new SceneManager();
//델리게이트 인스턴스화
sm.onLoaded = this.OnLoaded;
//메서드 호출
sm.LoadScene("Lobby");
}
//델리게이트 메서드 정의
private void OnLoaded()
{
Console.WriteLine("로비 호출됨.");
}
}
}
using System;
namespace Study09
{
public delegate void DelOnLoaded();
public class SceneManager
{
public DelOnLoaded onLoaded;
public SceneManager()
{
}
public void LoadScene(string sceneName)
{
Console.WriteLine("{0}씬 호출함", sceneName);
onLoaded();
}
}
}
using System;
namespace Study09
{
public class App
{
//생성자
public App()
{
Console.WriteLine("App");
GameLauncher launcher = new GameLauncher();
launcher.onEndGame = this.OnEndGame;
launcher.StartGame();
}
private void OnEndGame()
{
Console.WriteLine("게임 끝.");
}
}
}
using System;
namespace Study09
{
public delegate void DelOnEndGame();
public class GameLauncher
{
public DelOnEndGame onEndGame;
public GameLauncher()
{
}
public void StartGame()
{
Console.WriteLine("게임 시작.");
onEndGame();
}
}
}