避免对核心数据(或类似持久化框架)的全局依赖是一种良好的编程实践,可以使代码更加模块化和可测试。以下是一些解决方法:
public class MyClass {
private CoreData coreData;
public MyClass(CoreData coreData) {
this.coreData = coreData;
}
public void doSomething() {
// 使用coreData进行操作
}
}
public interface CoreDataService {
void doSomething();
}
public class CoreDataManager implements CoreDataService {
private CoreData coreData;
public CoreDataManager(CoreData coreData) {
this.coreData = coreData;
}
@Override
public void doSomething() {
// 使用coreData进行操作
}
}
public class MyClass {
private CoreDataService coreDataService;
public MyClass(CoreDataService coreDataService) {
this.coreDataService = coreDataService;
}
public void doSomethingWithData() {
coreDataService.doSomething();
}
}
public interface CoreDataService {
void doSomething();
}
public class DatabaseCoreDataService implements CoreDataService {
private DatabaseCoreData coreData;
public DatabaseCoreDataService(DatabaseCoreData coreData) {
this.coreData = coreData;
}
@Override
public void doSomething() {
// 使用coreData进行数据库操作
}
}
public class FileCoreDataService implements CoreDataService {
private FileCoreData coreData;
public FileCoreDataService(FileCoreData coreData) {
this.coreData = coreData;
}
@Override
public void doSomething() {
// 使用coreData进行文件操作
}
}
public class CoreDataServiceFactory {
public static CoreDataService createCoreDataService(String type) {
if (type.equals("database")) {
return new DatabaseCoreDataService(new DatabaseCoreData());
} else if (type.equals("file")) {
return new FileCoreDataService(new FileCoreData());
}
throw new IllegalArgumentException("Invalid core data type");
}
}
public class MyClass {
private CoreDataService coreDataService;
public MyClass(String coreDataType) {
this.coreDataService = CoreDataServiceFactory.createCoreDataService(coreDataType);
}
public void doSomethingWithData() {
coreDataService.doSomething();
}
}
以上是一些解决方法的示例,具体的实现方式可以根据具体的项目需求和框架来选择。
上一篇:避免对共享基础状态进行成员访问