java 共享类,避免使用许多Java类共享字段的重复代码

考虑:

Java8+接口可以有

default methods

. 这些方法可以使用其他接口方法来定义附加/默认逻辑。实现这种接口的类自动获取这些方法,而不必实现它们。

同样,一个类可以实现多个接口。

例子:

public interface Document {

T get(String key);

void set(String key, Object value);

}

public interface Person extends Document {

default String getName(){

return get("name");

}

default void setName(String name){

set("name", name);

}

}

还有一个:

public interface Salaried extends Document {

default double getSalary(){

return get("salary");

}

default void setSalary(double salary){

set("salary", salary);

}

}

Document

使用数据库存储:

public class DBDoc implements Document {

private final Map data;

public DBDoc(HashMap data) {

this.data = new HashMap<>(data);

}

public DBDoc(){

this.data = new HashMap<>();

}

@Override

@SuppressWarnings("unchecked")

public T get(String key) {

return (T) this.data.get(key);

}

@Override

public void set(String key, Object value) {

this.data.put(key, value);

}

}

我们使用了一个简单的映射来存储数据,但它也可能使用数据库连接或数据库特定的文档来获取/设置数据。这取决于您使用的数据库或存储。

public class Employee extends DBDoc implements Person, Salaried { }

使用它们:

public static void main(String[] args) {

Employee employee = new Employee();

employee.setName("Joe");

employee.setSalary(1000.00);

System.out.println(employee.getName());

System.out.println(employee.getSalary());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值