blu*_*sky 8 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(int percentage);
public List<Product> getProducts();
}
Run Code Online (Sandbox Code Playgroud)
然后SimpleProductManager
创建一个实现类:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
实现类添加了一个额外的方法setProducts()
.接口ProductManager
是否还应该有一个setProducts
方法来允许setProducts
用于SimpleProductManager
多态实例化的类.目前这是不可能的 -
ProductManager p = new SimpleProductManager();
p.setProducts();
Run Code Online (Sandbox Code Playgroud)
该接口不包括,setProducts
因为该接口的客户端(可能是MVC控制器)不应该调用它.该接口仅定义客户端应该使用的那些操作,而不是定义实现可能具有的所有方法.
setProducts
bean配置(例如使用<property name="products">
)可以访问该方法,这允许在启动时静态配置产品.之后,客户端代码通过其受限制的接口引用bean.
p.setProducts()
在此示例中永远不应调用您的示例,因为产品仅在Bean配置中配置,而不是由业务逻辑配置.
归档时间: |
|
查看次数: |
329 次 |
最近记录: |