结构型模式-适配器模式

137 阅读2分钟

本文为学习记录

还是先讲故事,用我最喜欢的魔兽争霸做背景。

不死族开始干兽族+人族了,兽族和人族联合起来对抗,然而有个问题,这俩族的军营只能生产各自的兵种,上前线需要两个兵种的话,就得苦工农民一起去造房子,有没有办法用一个特定的军营生产两个种族的兵呢?

可以用适配器模式实现下上面的逻辑。人族科技高,在人族军营的基础上,研发了一个适配器军营,可以生产兽人。

可以有两种方法:

一、类适配器模式

人族军营作为一个类(只能生产步兵),适配器军营草图作为一个接口(可以生产步兵+兽人),接下来就很简单了,根据适配器军营草图来建适配器军营,继承了人族军营,实现了草图。这样适配器军营既可以生产步兵,也可以生产兽人。


二、对象适配器模式

人族军营作为一个类(只能生产步兵),适配器军营草图作为一个接口(可以生产步兵+兽人),那么在创造适配器军营时,都会先创建一个人族军营(即对象),然后负责生产步兵的逻辑,用这个对象去干,生产兽人的逻辑单独实现就好了。

当然对象适配器模式会具备更好的可扩展性,比如暗夜也加入战局要生产弓箭手,那就往适配器军营草图里加一个生产弓箭手的方法,然后适配器军营里包含暗夜军营,生产弓箭手的时候调用暗夜军营的生产方法就好了。