public static void Main()
IAnalyticsFacade facade = new AnalyticsFacade();
EventData edata = new EventData ();
edata.data = "It is sample Data";
facade.WriteEvent(edata);
Console.WriteLine(facade.ReadEvent(1).data);
public class AnalyticsFacade : IAnalyticsFacade {
private IAnalyticsFacade _Cloud;
private IAnalyticsFacade _Splunk;
bool enableSplunk = false;
_Cloud = enableCloud ? new Cloud() : null;
_Splunk = enableSplunk ? new Splunk() : null;
public bool WriteEvent(EventData data){
return _Splunk.WriteEvent(data);
return _Cloud.WriteEvent(data);
public EventData ReadEvent(int id) {
return _Splunk.ReadEvent(id);
return _Cloud.ReadEvent(id);
public interface IAnalyticsFacade {
bool WriteEvent(EventData data);
EventData ReadEvent(int id);
public string data { get; set;}
public int id { get; set;}
class Splunk : IAnalyticsFacade {
public bool WriteEvent(EventData data){return true;}
public EventData ReadEvent(int id) { return new EventData { data = "Data from Splunk", id=1};}
class Cloud : IAnalyticsFacade {
public bool WriteEvent(EventData data){return true;}
public EventData ReadEvent(int id) { return new EventData { data = "Data from Cloud", id=1};}