当您想学习 MVC 时,您已经知道要实现 MVC 模式需要三层:模型、视图、控制器。在您的情况下,您有两个层,模型(Product)和视图(ProductGUI,假设这是一个不同的类)。你缺少的是控制器。
为了利用 MVC,我建议您使用 API 方法实现控制器层,以便您拥有一个接口,ProductController;和一个实现接口的类ProductControllerImpl。这种接口类分离允许您在替代实现之间切换,还允许模拟您的服务以进行用户界面测试(请参阅Wikipedia 以获得进一步的解释)。
让我也试着用一个简单的例子来解释一下。
假设您为 Controller 层创建接口,如下所示:
public interface ProductController {
public List<Product> listProducts();
public List<Product> listProducts(NameFilter nameFilter);
}
然后您可以为此接口创建一个 Mock 实现,用于测试目的:
public class ProductControllerImplMock implements ProductController {
List<Product> products;
public ProductControllerImplMock() {
products = new ArrayList<Product>();
}
public List<Product> listProducts() {
products.add(new Product("A"));
products.add(new Product("B"));
return products;
}
public List<Product> listProducts(NameFilter nameFilter) {
products.add(new Product("A"));
return products;
}
}
注意:假设您有一个 NameFilter 类,旨在按名称过滤产品。
如果您决定使用数据库来存储您的产品,那么您可以实现ProductControllerDatabaseImpl,它将查询您的数据库并检索实体以进行列表,并且很可能将WHERE 子句引入listProducts(NameFilter) 方法的查询.
其实,事情从来没有这么简单。此示例中显示的将在更复杂的应用程序中称为 DAO(数据访问对象),并且将有一个单独的层,通常称为业务层而不是控制器层,它将实现应用程序的实际逻辑。但为了简单起见,我尽量让示例简单。