考虑下面的情景
一个系统有很多模块组成,系统提供的安全的校验,每个模块也有自己的安全校验。普通开发人员只关注本模块的安全校验,但是系统的安全校验又 由于模块的,这种情景就很适合适配器模式。
对于系统安全校验,开发人员提供如下的接口及实现
package 适配器; //系统模块安全监察 public interface IsystemSecurity { public boolean check(); }
package 适配器; public class SystemSecurity implements IsystemSecurity { public boolean check() { return true; } }
模块安全校验提供如下的接口
package 适配器; public interface ImoduleSecurity { public boolean check(); }
这个接口如何实现呢
下面的是使用适配器模式的实现
package 适配器; public class ModuleSecurity implements ImoduleSecurity { private IsystemSecurity systeSecurity; public ModuleSecurity(IsystemSecurity systemSecurity) { this.systeSecurity = systemSecurity; } public boolean check() { if (!systeSecurity.check()) return false; return true; } }
六.使用场景及使用感受
希望复用一些现存的类,但是接口又与复用环境要求不一致。
其实适配器模式有点无奈之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该考虑通过重构统一接口。
七.适配器模式与装饰者模式
它们都可以用来包装对象,本质区别在于
适配器模式:将一个接口转换成另外一个接口。
装饰者模式:不改变接口,只加入职责。