关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
上个月关门了。
改进这个问题
我目前正在实施一个增强设计。我需要你的设计建议。
以下是我的要求:
我有4种方法,即->获取\模式、转换\模式、阶段\模式和注册\模式
我有两个客户。一个客户机应该只能重写一个方法->转换模式,而另一个客户机应该可以重写所有方法
我想到了以下方法:
接口a->与fetch schema、staging、register to schema registry方法的默认实现(Java8)的接口
扩展接口a的类可以重写fetch schema、staging、register to schema registry方法
接口b->transformer的接口,其中包含transformer方法的默认实现
扩展接口b的类可以重写transformer方法
在上述方法中,第一个客户机将只使用接口b,而想要覆盖所有方法的第二个客户机可以使用接口a和接口b
示例代码:
interface A {
default fetch_schema(){ // Some default implementation }
default stage_schema(){ // Some default implementation }
default register_schema(){ // Some default implementation }
}
interface B {
default transform_schema(){ // Some default implementation }
}
// Sample class used by client 1
class SampleTransformer implements B {
@Override
transform_schema(){
// Some implementation
}
}
// Sample class used by client 2
class SampleTransformer implements A,B {
@Override
fetch_schema(){
// Some implementation
}
@Override
stage_schema(){
// Some implementation
}
@Override
register_schema(){
// Some implementation
}
@Override
transform_schema(){
// Some implementation
}
}
另一种方法是:
接口a->接口,带有fetch schema、staging、register to schema registry方法的声明
扩展接口a的类可以重写fetch schema、staging、register to schema registry方法
接口b->包含transformer方法声明的transformer接口
扩展接口b的类可以重写transformer方法
在上述方法中,将有一个名为defaultschemaprocessor的默认bean,它扩展接口a和b并重写必要的方法。
想要重写这些方法的相应客户机将定义自己的bean并替换defaultschemaprocessor。
第一个客户机的bean将只扩展接口b,而想要覆盖所有方法的第二个客户机可以使用接口a和接口b
示例代码:
interface A {
fetch_schema();
stage_schema();
register_schema();
}
interface B {
transform_schema();
}
// DefaultSchemaProcessor
class DefaultSchemaProcessor implements A,B {
@Override
fetch_schema(){
// Some implementation
}
@Override
stage_schema(){
// Some implementation
}
@Override
register_schema(){
// Some implementation
}
@Override
transform_schema(){
// Some implementation
}
}
// Sample class used by client 1
class SampleTransformer implements B {
@Override
transform_schema(){
// Some implementation
}
}
// Sample class used by client 2
class SampleTransformer implements A,B {
@Override
fetch_schema(){
// Some implementation
}
@Override
stage_schema(){
// Some implementation
}
@Override
register_schema(){
// Some implementation
}
@Override
transform_schema(){
// Some implementation
}
}
你们有什么建议吗?
2条答案
按热度按时间rta7y2nd1#
因为您可以有另一个使用默认实现的客户机,所以我建议您使用Java8默认接口方法。使用它将删除对defaultschemaprocessor的要求。
j0pj023g2#
好吧,整件事都是基于观点的。作为
client 2
可以重写所有的方法,也可以inteface A
包含以下所有方法:通过这个
client 1
仅实现接口B
和clinet 2
只需要implement A
不知道b。