Design patterns 委托模式(或OO设计原则)问题
我对OOP中的委托设计原则有一个疑问。我将使用GOF设计模式书中的窗口和矩形类示例来解释我的查询Design patterns 委托模式(或OO设计原则)问题,design-patterns,Design Patterns,我对OOP中的委托设计原则有一个疑问。我将使用GOF设计模式书中的窗口和矩形类示例来解释我的查询 public class Window { Rectangle myDelegate; public void Area() { return myDelegate.Area(); } } public class Rectangle { public int Area() { return 2*3; } }
public class Window
{
Rectangle myDelegate;
public void Area()
{
return myDelegate.Area();
}
}
public class Rectangle
{
public int Area()
{
return 2*3;
}
}
我的问题是:矩形(委托)是否可以引用窗口(父类)。i、 e:
在非常重要的情况下,上述操作将使委托更方便地更新父级的状态。
这是合乎逻辑的还是我遗漏了什么
谢谢 维护单向引用要容易得多。在这种情况下,
窗口
可以询问其自身尺寸的矩形,并使用它来分配所需的空间。然后,矩形
就可以自由地在它想要的空间中呈现自己。维护单向引用要容易得多。在这种情况下,窗口
可以询问其自身尺寸的矩形,并使用它来分配所需的空间。然后,矩形
就可以自由地在它想要的空间中呈现自己
public interface IShape
{
void Area();
void SetArea(int area);
}
public class Window : IShape
{
private IShape rectangle;
private int myArea;
public Window(IShape shape)
{
rectangle = shape;
}
public void SetArea(int area)
{
myArea = area;
}
public void Area()
{
rectangle.Area();
}
}
public class Rectangle : IShape
{
private IShape window;
public Rectangle(IShape shape)
{
window = shape;
}
public void Area()
{
SetArea(2 * 3);
}
public void SetArea(int area)
{
window.SetArea(area);
}
}
公共接口IShape
{
空隙面积();
空位设置区域(内部区域);
}
公共类窗口:IShape
{
私有IShape矩形;
私人住宅区;
公共窗(IShape形状)
{
矩形=形状;
}
公共区域(内部区域)
{
myArea=面积;
}
公众休憩用地()
{
矩形区域();
}
}
公共类矩形:IShape
{
私人IShape窗口;
公共矩形(IShape形状)
{
窗口=形状;
}
公众休憩用地()
{
设定面积(2*3);
}
公共区域(内部区域)
{
窗口设置区域(面积);
}
}
公共接口IShape
{
空隙面积();
空位设置区域(内部区域);
}
公共类窗口:IShape
{
私有IShape矩形;
私人住宅区;
公共窗(IShape形状)
{
矩形=形状;
}
公共区域(内部区域)
{
myArea=面积;
}
公众休憩用地()
{
矩形区域();
}
}
公共类矩形:IShape
{
私人IShape窗口;
公共矩形(IShape形状)
{
窗口=形状;
}
公众休憩用地()
{
设定面积(2*3);
}
公共区域(内部区域)
{
窗口设置区域(面积);
}
}
如果这些是我的类,并且我需要委托与父级通信,我将在委托上创建一个事件,并将父级设置为侦听器。这有几个好处:
- 它允许同一委托在多个父级之间共享。如果委托表示有限的资源(“端口1234”),或者如果委托的实例化成本很高,这可能很有用
- 父级可以控制他们是否关心代理的行为。你不在乎吗?不要对这件事感兴趣
- 更少的维护考虑(正如Boris在上文中指出的)
- 它允许同一委托在多个父级之间共享。如果委托表示有限的资源(“端口1234”),或者如果委托的实例化成本很高,这可能很有用
- 父级可以控制他们是否关心代理的行为。你不在乎吗?不要对这件事感兴趣
- 更少的维护考虑(正如Boris在上文中指出的)