编码具有相同行为+独特行为的类

时间:2009-09-23 23:13:59

标签: design-patterns oop inheritance

我有一组有相同点和不同点的类。它们派生自一个接口,它定义了这些不同类之间的独特行为,以及一个基类来调用几个类中的通用功能。

是否有一种设计模式可以控制如何创建这些类?是否可以将基类和接口一起用于此设计挑战(几个类都具有相同的逻辑+独特行为)。

由于

3 个答案:

答案 0 :(得分:1)

我不清楚你的界面给你带来了什么好处。具有一些类似行为和一些不同行为的类是继承的本质。您可以将所有常见行为放在基类中,然后覆盖每个子类中需要不同的位置。

我想如果你的语言不支持抽象基类,那么拥有一个基类和一个接口是有意义的。你能举例说明你想做什么吗?


你的ABC可能是这样的:

public abstract class A
{
    public virtual void EverybodyDoesThisTheSame();
    public abstract void ThisIsDifferentForEach();
}

然后,在派生类中,您只需要使用ThisIsDifferentForEach(),它们都可以使用EverybodyDoesThisTheSame()的继承版本。

答案 1 :(得分:0)

规格模式将对您有所帮助。

http://en.wikipedia.org/wiki/Specification_pattern

答案 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; ... }
}

现在,如果您只想更改行为实现,则可以从行为中获得。