对于在其外部进行修改的包的最佳模式是什么?

时间:2010-09-25 18:26:50

标签: design-patterns

我正在寻找适合这些规格的设计模式:

1-假设您有包装动物,包括'动物','猫'和'狗'。

2-您必须修改'Animal'中的方法行为(也在包中的'Cat'和'Dog'中重写),而不对包动物源代码进行任何修改。

我确实找到了访问者模式用于这种目的,但是你必须修改包动物源代码,并实现一个包含accept方法的Visitable接口。但是,这是不允许的。

你有什么建议?

2 个答案:

答案 0 :(得分:1)

我不完全确定规范,但你可以使用Decorator来创建动物包之外的类,它将使用组合来扩展正常行为。

答案 1 :(得分:0)

我同意@Gabriel,装饰者模式可能是一个很好的起点。您可以在Holger Kreissl's Devblog Decorator Pattern in C#找到一个易于理解的示例。