我有一组有相同点和不同点的类。它们派生自一个接口,它定义了这些不同类之间的独特行为,以及一个基类来调用几个类中的通用功能。
是否有一种设计模式可以控制如何创建这些类?是否可以将基类和接口一起用于此设计挑战(几个类都具有相同的逻辑+独特行为)。
由于
答案 0 :(得分:1)
我不清楚你的界面给你带来了什么好处。具有一些类似行为和一些不同行为的类是继承的本质。您可以将所有常见行为放在基类中,然后覆盖每个子类中需要不同的位置。
我想如果你的语言不支持抽象基类,那么拥有一个基类和一个接口是有意义的。你能举例说明你想做什么吗?
你的ABC可能是这样的:
public abstract class A
{
public virtual void EverybodyDoesThisTheSame();
public abstract void ThisIsDifferentForEach();
}
然后,在派生类中,您只需要使用ThisIsDifferentForEach(),它们都可以使用EverybodyDoesThisTheSame()的继承版本。
答案 1 :(得分:0)
规格模式将对您有所帮助。
答案 2 :(得分:0)
如果不将基类用于公共接口但只使用常见行为,则不需要从中派生,而是将其作为成员。这样,您可以在需要时动态分配行为。
public class behavior
{
private void Login();
}
public class concrete1: behavior, IWebApplication
{
public void Dosomething {Login; ... }
}
变为
public class behavior
{
public void Login();
}
public class concrete: IWebApplication
{
private mBehavior;
public concrete(behavior aBehavior): mBehavior(aBehavior) {if (aBhavior == 0) mBehavior = new behavior} ;
public void Dosomething {mBehavior.Login; ... }
}
现在,如果您只想更改行为实现,则可以从行为中获得。