设计之接口行为的扩展 原

2019-04-15 10:36:52 浏览数 (2)

    接口行为的扩展,经常面临这样的问题,之前已经定义好一个接口,且该接口已经在很多地方使用到,现在我们想让新增新方法。

    如下图1所示所示,已经定义了接口IVedioMedia,已经有RM和Mpeg实现了它。现在如果在IVedioMedia接口中新增resize()方法,那么就要连同RM和Mpeg一同修改,这已经违反了open-close原则,即在添加新功能的同时,不修改原有的、已经存在的代码。这时候我们应该定义新的interface接口——IResizable,之后新建RMAdapter来实现这个接口,同时让RMAdapter继承RM,这样就在实现新功能的同时,不修改IVediaoMedia和RM,做到了不修改已经存在的代码。

    由于项目的历史原因,经常会遇到这种问题,所以在这里记录下。

                                                        图1 

    建议读者阅读《软件设计精要与模式》的第14章,阅读原文。

Reference:

  1. 张逸著,软件设计精要与模式,第14章

(adsbygoogle = window.adsbygoogle || []).push({});

0 人点赞