代理模式的多种实现与应用
1. 保护代理
在某些场景中,我们需要对对象的操作进行保护。例如,只有满足一定条件的司机才能开车。以下是一个简单的代码示例:
if (driver.Age >= 16)
car.Drive();
else
WriteLine("Driver too young");
使用代理的示例如下:
ICar car = new CarProxy(new Driver(12));
car.Drive(); // Driver too young
虽然 Car 和 CarProxy 都实现了 ICar 接口,但它们的构造函数并不相同。这是否会成为问题,取决于代码的依赖情况:
- 依赖 Car 而非 ICar :如果代码依赖于 Car 类型,违反了依赖倒置原则(DIP),那么需要在代码中搜索并替换所有使用该类型的地方。虽然使用 ReSharper/Rider 等工具可以完成,但会很麻烦。
- 依赖 ICar 但显式调用 Car 构造函数 :需要找到所有构造函数的调用,并为每个调用提供一个 Driver
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



