C# 인터페이스 콜백
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// ,
Controller obj = new Controller(new CallBack());
//
obj.Star();
}
}
public interface IBack
{
void run();
}
public class CallBack : IBack
{
public void run()
{
//
System.Console.WriteLine(DateTime.Now);
}
}
public class Controller
{
public IBack CallBackObj = null; //
public Controller(IBack obj)
{
this.CallBackObj = obj;
}
public void Star()
{
Console.WriteLine(" , ESC ....");
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
{
CallBackObj.run();
}
}
}
}
예시 프로그램이 실행될 때, 언제 CallBack 대상의run () 방법을 호출할지 사용자가 결정하고, 사용자가 키를 두드릴 때마다 컨트롤러 대상은CallBack의run () 방법을 호출합니다.이 예에서 앙상블을 실현하는 관건은 Iback 인터페이스의 도입에 있다.Iback 인터페이스를 사용하지 않고 CallBack 객체를 직접 사용하는 경우 다음과 같은 효과를 얻을 수 있습니다.
public class Controller
{
public CallBack CallBackObj = null; //
public Controller(CallBack obj)
{
this.CallBackObj = obj;
}
public void Star()
{
Console.WriteLine(" , ESC ....");
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
{
CallBackObj.run();
}
}
}
그러나 곰곰이 생각해 보면 Controller 클래스는 CallBack 대상과 연결되고, 만약 다른 유형의 대상을 호출해야 한다면 반드시 Controller 클래스의 코드를 수정해야 한다.만약에 Controller 클래스가 추상적인 인터페이스 변수 Iback을 수신한다면 이 인터페이스를 실현한 모든 대상은 Controller 클래스의 대상에 의해 리셋될 수 있다. Controller 클래스의 코드는 수정되지 않고 코드가 환경에 대한 적응성을 확보하는 것이 좋은 해결 방안이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.