实施战略模式的最佳方式
本文关键字:最佳 方式 模式 施战略 | 更新日期: 2023-09-27 18:17:57
我一直在寻找Strategy Pattern
,我看到了这个链接,这个家伙已经很好地解释了这个模式。
但据我所知(也许是对的或错的),你不应该在另一个class
中创建一个新的class
(为了松散耦合)。
this.motor = new Motor(this)
是否有一种更好的实现,不违反原则(如IoC)?
它将产生一个更易于维护的代码,将您的策略和上下文定义为接口:
interface IStrategy<T> where T : IContext
{
T Context { get; }
void Execute();
}
// this cab have other structures too depending on your common logic
// like being generic
interface IContext
{
}
我自己更喜欢构造函数注入。但是在这种情况下,需要属性注入,因为可能需要在运行时更改策略。
现在你可以实现/注入你的具体类型了
可以使用构造函数注入。
public class MyClass{
public MyClass(Motor motor){
this.motor = motor;
}
}
然后,由您的IOC容器来提供所需的依赖项。
当然,有很多可能性。战略工厂呢?
this.motor = MotorFactory.newMotor(MotorFactory.BOOST);
或者仅仅是一个用于注入的mutator方法(假设IMotor
是电机的抽象接口:)
void setMotor(IMotor m) {
this.motor = m;
}
你可以使用"dynamic"在c#中改成这样:
方法(动态输入)
方法(DTO1输入)方法(DTO2输入)方法(DTO3输入)