接口行为的扩展,常常面临这样的问题,以前已经定义好一个接口,且该接口已经在不少地方使用到,如今咱们想让新增新方法。spa
以下图1所示所示,已经定义了接口IVedioMedia,已经有RM和Mpeg实现了它。如今若是在IVedioMedia接口中新增resize()方法,那么就要连同RM和Mpeg一同修改,这已经违反了open-close原则,即在添加新功能的同时,不修改原有的、已经存在的代码。这时候咱们应该定义新的interface接口——IResizable,以后新建RMAdapter来实现这个接口,同时让RMAdapter继承RM,这样就在实现新功能的同时,不修改IVediaoMedia和RM,作到了不修改已经存在的代码。设计
因为项目的历史缘由,常常会遇到这种问题,因此在这里记录下。继承
图1 接口
建议读者阅读《软件设计精要与模式》的第14章,阅读原文。io