首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java设计模式:外观

Java设计模式:外观
EN

Stack Overflow用户
提问于 2012-05-11 19:16:07
回答 5查看 1.5K关注 0票数 1

我正在尝试创建一个简单的排序系统,因为它是一个赋值,所以我不应该创建DB和GUI,但我需要实现至少4个设计模式。我的一个决定是使用Facade。据我所知,Facade类是一种控制器,这就是我到目前为止所拥有的:

代码语言:javascript
复制
package model;

import java.util.ArrayList;

public class Facade {
ClientsList clients;
OrdersList orders;
ProductsList products;
ArrayList<Orders> orderlist;
public Facade() {
    clients = new ClientsList();
    orderlist=new ArrayList<Orders>();
    orders = new OrdersList(orderlist);
    products = new ProductsList();

}

public int ClientsSize() {

    return clients.size();
}

public int OrdersSize() {

    return orders.size();
}

public void addClients(Clients client) {
    clients.add(client);

}

public void addOrders(Orders order) {
    orders.add(order);
}

public void removeClients() {
    clients.remove();

}

public void removeOrders() {
    orders.remove();

}

public String next() {
    return orders.it();
}
}

我的模型包中的其他类是Orders、OrdersList、Clients、Clients List、Products和ProductsList,在*List类中,我将信息保存在ArrayList中。所以我的问题是:这段代码是外观吗?

EN

回答 5

Stack Overflow用户

发布于 2012-05-11 20:04:09

facade应该是为了让我不知道某些类和它们实现的操作。在你的例子中,我可能不需要知道ClientList,但我确实需要知道客户,产品和订单。如果这些类对我隐藏起来会更好,所以我只需要和facade对话。

票数 1
EN

Stack Overflow用户

发布于 2012-05-11 21:00:37

编写一个额外的接口,这样开发人员就不必使用facade的实现了:

代码语言:javascript
复制
public interface OrderService {
    //methods your co-developers should be able to use
}

public class Facade implements OrderService {
    //methods your co-developers dont want to know about
}

在你的代码中使用接口,而不是impl。

票数 1
EN

Stack Overflow用户

发布于 2012-05-11 19:21:34

外观的目标是屏蔽特定组件中的功能实现。外观通常会提供一个“外部世界”的接口。我不知道您代码的其余部分,但上面的示例可能只是一个门面。

假设您正在构建一个从社交媒体获取消息的组件。您可以使用'GetMessage(string keyword)‘方法构建一个facade,该方法(显然)返回一个消息列表,而不考虑社交媒体来源。该组件的客户端并不关心该组件如何从社交媒体获取数据,他只想要消息。像“SearchFacebook”或“SearchTwitter”这样的方法可以被隐藏,因为客户端对调用这些方法没有兴趣。然而,'GetMessages‘可以使用它们来搜索Facebook和Twitter,建立一个这两个结果的列表,并将其返回给客户端。

还有另一个很好的例子,请查看维基页面:http://en.wikipedia.org/wiki/Facade_pattern

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10550288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档