我有父类:
public abstract class ParentClass
{
public ParentClass ParentMethod() { ... }
}
我也有两个孩子:
public class ChildA : ParentClass
{
public ChildA ChildAMethod1()
{
...
return this;
}
public ChildA ChildAMethod2()
{
...
return this;
}
}
public class ChildB : ParentClass
{
public ChildB ChildBMethod() { ...
return this; }
}
在这种情况下,我有可能这样写:
new ChildA().ChildAMethod1().ChildAMethod2();
但是如何实现这样写的可能性:
new ChildA().ParentMethod().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod().ChildBMethod1();
这种可能性还有其他模式吗?
答案 0 :(得分:3)
使ParentMethod成为通用
new ChildA().ParentMethod<ChildA>().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod<ChildB>().ChildBMethod1();
然后将其称为
df = df.apply(lambda x: x.replace(',', '&'))
df = df.apply(lambda x: x.replace('.', ','))
df = df.apply(lambda x: x.replace('&', '.'))
答案 1 :(得分:0)
如果未从父级继承子级的方法,则父级和子级之间的连接是什么?
由于类已经解耦,您可以通过接口强调解耦:
public interface INext
{
INext ChildAMethod1();
INext ChildAMethod2();
}
public abstract class ParentClass
{
public INext ParentMethod()
{
...
return new ChildA(...);
}
}
public class ChildA : ParentClass, INext
{
public INext ChildAMethod1()
{
...
return this;
}
public INext ChildAMethod2()
{
...
return this;
}
}