Java 这个春季教程中的错误实践?
我在跟踪调查 在“3.2.为业务逻辑添加一些类”部分中,创建了一个接口Java 这个春季教程中的错误实践?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在跟踪调查 在“3.2.为业务逻辑添加一些类”部分中,创建了一个接口ProductManager: package springapp.service; import java.io.Serializable; import java.util.List; import springapp.domain.Product; public interface ProductManager extends Serializable{ public void increasePrice
ProductManager
:
package springapp.service;
import java.io.Serializable;
import java.util.List;
import springapp.domain.Product;
public interface ProductManager extends Serializable{
public void increasePrice(int percentage);
public List<Product> getProducts();
}
package springapp.service;
import java.util.List;
import springapp.domain.Product;
public class SimpleProductManager implements ProductManager {
public List<Product> getProducts() {
throw new UnsupportedOperationException();
}
public void increasePrice(int percentage) {
throw new UnsupportedOperationException();
}
public void setProducts(List<Product> products) {
throw new UnsupportedOperationException();
}
}
实现类添加了一个额外的方法setProducts()
。接口ProductManager
是否也没有setProducts
方法来允许使用setProducts
的类以多态方式实例化SimpleProductManager
。目前这是不可能的-
ProductManager p = new SimpleProductManager();
p.setProducts();
该接口不包括
setProducts
,因为该接口的客户端(可能是MVC控制器)不应该调用它。接口只定义客户端应该使用的那些操作,而不是定义实现可能具有的所有方法
bean配置可以访问setProducts
方法(例如使用
),这允许在启动时静态配置产品。之后,客户机代码通过其受限接口引用bean
您的p.setProducts()
示例在本例中不应被调用,因为产品仅在bean配置中配置,而不是通过业务逻辑配置