Csharp/C Sharp/Design Patterns/Proxy Pattern — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 11:38, 26 мая 2010
Pattern Example: Remote-Proxy
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
public interface IEmployee {
string Design();
string StressTest();
string Mechanical();
string Performance();
}
public class ChiefDesignEngineer : MarshalByRefObject, IEmployee {
public string Design() {
return "Design ";
}
public string StressTest() {
return "stress";
}
public string Mechanical() {
return "mechanical";
}
public string Performance() {
return "performance";
}
public ChiefDesignEngineer() { ;}
}
public class ProxyChiefDesignEngineer : MarshalByRefObject, IEmployee {
private ChiefDesignEngineer chief;
public string Design() {
return this.chief.Design();
}
public string StressTest() {
return this.chief.StressTest();
}
public string Mechanical() {
return "A supplement to mechanical";
}
public string Performance() {
return "Performance information is in the manual.";
}
public ProxyChiefDesignEngineer() {
this.chief = new ChiefDesignEngineer();
}
}
public class Server {
static void Main(string[] args) {
TcpServerChannel channel = new TcpServerChannel(1234);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ProxyChiefDesignEngineer), "RemoteProxy", WellKnownObjectMode.SingleCall);
Console.WriteLine("Press [Enter] to terminate server...");
Console.ReadLine();
}
}
public class Client {
static void Main(string[] args) {
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownClientType
(typeof(ProxyChiefDesignEngineer), "tcp://localhost:1234/RemoteProxy");
ProxyChiefDesignEngineer ukProxyChief = new ProxyChiefDesignEngineer();
Console.WriteLine("Answer: " + ukProxyChief.Performance());
Console.WriteLine("Answer: " + ukProxyChief.Design());
}
}
Proxy Pattern Demo
using System;
public interface IEmployee {
string Design();
string StressTest();
string Mechanical();
string Performance();
}
public class ChiefDesignEngineer : IEmployee {
public string Design() {
return "Design ";
}
public string StressTest() {
return "Stress Test";
}
public string Mechanical() {
return "mechanical";
}
public string Performance() {
return "performance";
}
public ChiefDesignEngineer() { ;}
}
public class ProxyChiefDesignEngineer : IEmployee {
private ChiefDesignEngineer chief;
public string Design() {
return this.chief.Design();
}
public string StressTest() {
return this.chief.StressTest();
}
public string Mechanical() {
return "supplement to mechanical.";
}
public string Performance() {
return "Performance for Chief Design Engineer";
}
public ProxyChiefDesignEngineer() {
this.chief = new ChiefDesignEngineer();
}
}
public class Client {
static void Main(string[] args) {
ProxyChiefDesignEngineer caProxyChief = new ProxyChiefDesignEngineer();
Console.WriteLine(caProxyChief.StressTest());
Console.WriteLine(caProxyChief.Performance());
ProxyChiefDesignEngineer nyProxyChief = new ProxyChiefDesignEngineer();
Console.WriteLine(nyProxyChief.Mechanical());
}
}