【发布时间】:2017-03-29 02:13:25
【问题描述】:
假设我试图通过类似这样的其他类来访问一个类的方法
class SuperClass
{
public interface ISubject
{
void Print();
}
private class Subject : ISubject
{
public void Print()
{
Console.WriteLine("this is a print");
}
}
public class Proxy {
ISubject subject;
public void CallOtherMethod() {
subject = new Subject();
subject.Print();
}
}
}
class Client: SuperClass
{
static void Main() {
Proxy proxy = new Proxy();
proxy.CallOtherMethod();
}
}
这被称为代理类吗?或者它是否需要有一个接口作为参考然后我们必须调用该方法?比如这样的
class SuperClass
{
public interface ISubject
{
void Print();
}
private class Subject : ISubject
{
public void Print()
{
Console.WriteLine("this is a print");
}
}
public class Proxy : ISubject
{
ISubject subject;
public void Print()
{
subject = new Subject();
subject.Print();
}
}
}
class Client : SuperClass
{
static void Main()
{
ISubject proxy = new Proxy();
proxy.Print();
}
}
【问题讨论】:
-
使用代理模式,您可以将
ISubject的实例传递给proxy.Print()方法,然后Proxy可能有额外的保护措施,或其他相关功能要调用,例如通知者。在您的示例中,Proxy应该被称为Printer -
@LordWilmore 那么代理模式和桥接模式有什么区别?在桥接模式中,我们将接口的实例传递给抽象类
-
@LordWilmore 我应该在这个问题中更新我对桥接模式的理解,以便清楚地了解我在说什么吗?
标签: c# proxy-pattern