Design patterns
복합 패턴
수색…
복합 로거
합성 패턴은 객체 그룹을 객체의 단일 인스턴스로 처리 할 수있는 디자인 패턴입니다. 이것은 Gang of Four의 구조 설계 패턴 중 하나입니다.
아래의 예는 단일 로그 호출을 사용하여 여러 위치에 로그하는 데 Composite를 사용하는 방법을 보여줍니다. 이 방법을 준수 SOLID 원칙 이 위반하지 않고 새로운 로깅 메커니즘을 추가 할 수 있기 때문에 단일 책임의 원칙 (각 로거는 하나의 책임이있다) 또는 폐쇄 / 열기 원칙 (당신은 새로운 구현을 추가하여 새로운 장소에 기록하는 새로운 로거를 추가 할 수 있습니다 기존의 것을 수정하지 않음).
public interface ILogger
{
void Log(string message);
}
public class CompositeLogger : ILogger
{
private readonly ILogger[] _loggers;
public CompositeLogger(params ILogger[] loggers)
{
_loggers = loggers;
}
public void Log(string message)
{
foreach (var logger in _loggers)
{
logger.Log(message);
}
}
}
public class ConsoleLogger : ILogger
{
public void Log(string message)
{
//log to console
}
}
public class FileLogger : ILogger
{
public void Log(string message)
{
//log to file
}
}
var compositeLogger = new CompositeLogger(new ConsoleLogger(), new FileLogger());
compositeLogger.Log("some message"); //this will be invoked both on ConsoleLogger and FileLogger
합성 로거가 중첩 될 수 있다는 것을 언급 할 가치가 있습니다 (합성 로거 생성자에 대한 매개 변수 중 하나는 다른 합성 로거가 될 수 있음)는 트리 구조를 만듭니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow