我是设计模式的新手。当开发人员使用库(在我的情况下是一个库来筛选HTML)并且不希望客户端/调用类被“卡住”到该库时,最好的模式是什么?
例如,如果我在名为HtmlPage的库中使用类,而客户端使用'getPage()' - 我不想从库中返回HtmlPage对象,而是某种HtmlPage的包装器如果我决定更换库,我可以换掉。它就这么简单吗?或者我错过了什么?我是否必须为库中的每个对象执行此操作?
public class HtmlPageWrapper {
private HtmlPage htmlPage;
public HtmlPageWrapper(HtmlPage) {}
public getTableOnPage() {
return htmlPage.getTableOnPage;
}
// etc...
}
谢谢!
答案 0 :(得分:2)
我认为你对Adapter Pattern感兴趣。这将使您通过创建一个公开应用程序将使用的抽象操作的Adapter
类,使这些第三方类远离您的代码。
您不一定要为库中的每个对象执行此操作,只需确保包装需要与之交互的主对象。
答案 1 :(得分:0)
我只是扩展它并覆盖我想要更改/添加的那些,然后我可以重用我仍然喜欢的那些,
public class HtmlPageWrapper extends HtmlPage {
public HtmlPageWrapper(HtmlPage p) {
super(p);
}
@Override
public getTableOnPage() {
return super.getTableOnPage();
}
// etc...
}
答案 2 :(得分:0)
如果你想隐藏单个界面后面的库,你也可以尝试使用Façade模式,然后可以为不同的库提供不同的实现。
为子系统中的一组接口提供统一接口。 Façade定义了一个更高级别的接口,使子系统更易于使用。