这个模式很好理解,就说手机吧,想要充电,不可能直接报手机插在插座上,因为接口不匹配。所以我们需要充电器连接手机和插座,帮我们完成适配,充电器就可以被看作一个适配器。
什么是适配器模式?
将以各类的接口,换成客户期望的另一个接口。这能够让原本不兼容的类可以无间合作。
举例: 不兼容
如图结构,execute 方法需要 Target 对象的 methodA 方法,Adaptee 无论是类型还是方法,都不沾边,是没法直接应用到 execute 方法的。 适配器像这样增加一个 TargetAdapter,实现 Target,在方法调用时,替换成 adaptee 的方法,这样,运行时就可以间接地使用 Adaptee 了。
//运行
Target target = new TargetAdapter(new Adaptee());
execute(target);
优点
- 转变接口,实现兼容
- 目标和被适配者解耦,其中一方改变,只需要修改适配器,而另一方就不用修改。
什么是外观模式?
提供一个统一接口,用来访问子系统中的一群接口,或者是一群自系统的接口。这种模式定义了一个高层接口,方便使用。目的是简化接口。
举个例子,有这样一款玩具机器人,可以用遥控器控制它做一些动作,如:摆手、扭腰、抬腿等。如果想控制它跳一支舞,就需要不断地控制它的部件。这样比较麻烦,于是厂商在遥控器上增加了预设功能,可以自定义一套动作并保存,下次想要这个动作直接点这个预设按钮就行了,很方便,而且原来的单个功能也能用。
外观模式就是解决这类问题的,通过把繁琐的子系统以及方法抽取到一个外观类中,并按照逻辑把一系列方法封装到外观类的方法中,系统需要某种功能可以调用外观类的方法,而不用逐个调用子系统的方法。如果想用子系统中的特定功能,也可以通过外观类获取。
网友评论