无废话C#设计模式之七:Adapter
2009-04-02 08:21:21 来源:WEB开发网核心提示: 代码执行结果如下图:图片看不清楚?请点击这里查看原图(大图),代码说明l 可以看到,无废话C#设计模式之七:Adapter(2),原先的接口中,启动游戏场景只需要一个参数,适配器做的不仅仅是换一换方法名,如果源角色和目标角色的差异非常大,就是游戏场景名,而进入新的玩家需要提供玩家ID(新游
代码执行结果如下图:
图片看不清楚?请点击这里查看原图(大图)。
代码说明
l 可以看到,原先的接口中,启动游戏场景只需要一个参数,就是游戏场景名,而进入新的玩家需要提供玩家ID(新游戏都使用玩家ID而不使用玩家账户名)。
l IGame接口就是适配器模式中的目标角色,这是客户所期待的接口。也是针对老的游戏程序所遵循的接口。
l Lobby类相当于调用方或者客户,它原先的代码可能是如下的:
IGame game = new Game();
但是由于接口的改变,现在不能直接实例化游戏类,只能实例化适配器类型。虽然还是需要改动,但是这个改动是很小的,而且完全可以通过用动态加载程序集来消除这种改动。
l GameAdapter类是适配器角色,它是适配器模式的核心,用于把源接口转变为目标接口。在这里,我们看到,它实现目标接口。
l Game类型是源角色,或者说是需要适配的对象。或许它也遵循了另外一套接口,不过我们不是很关心这个,因此代码中也没有体现。
l 使用了适配器模式后,客户端代码没有做什么修改。客户端代码老老实实的依赖接口,它并没有错,如果因此依赖对象的修改而需要大幅度修改就很无辜了,我们在适配器中把本来没有关联的两个接口适配在了一起。我们可以看到,适配器做的不仅仅是换一换方法名,如果源角色和目标角色的差异非常大,那么适配器需要做很多工作。
更多精彩
赞助商链接