我理解的设计模式之适配器模式

适配器模式
  含义
        将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
 使用心得:
        现有的类的接口不符合我们所期望的使用效果的接口,可以使用此模式  然而他的缺点:过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。优点就是不变动现有接口,从而达到所想要的效果,提高效率和代码复用扩展性
       举例:网上的  插座插头,电压的介绍已经烂大街
              说下理解吧:适配有类和对象的适配  具体情况自己选  一般是对象 组合》继承
                  拿的图谅解,来打我啊 
                
             1.我们所现有的接口  Adapee
              2.我们想要的东东   Target
              3.将现有鼓捣成想要的 Adapter
  
          咋弄?  
 /**
   * 现有的类或接口
   *    (我是5w灯泡)
   * @author lizhen
     *
   */
public class Adapee {
  //5w灯泡
  public void bulbOfFive(){};
      //110f
   public int voltageOFFive() {
       return 110;
     }
 }

/**
 * 想要的接口
 * (7w的灯泡)
 * @author lizhen
 *
  */
public interface Target {
    //7w灯泡
    void bulbOfSeven();
    //电压220f
    int voltage();
}              
                           

 /**
 * 类的适配
 *   继承了被适配类,同时实现标准接口
 * @author lizhen
 *
 */
public class Adapter extends Adapee implements Target{
    
@Override
public void bulbOfSeven() {
  //5w转7w
}
@Override
public int voltage() {
//110f转220f
return super.voltageOFFive() * 2;
}
   
}    
 /**

 * 对象的适配
 *   has-a ,实现想要接口
 * @author lizhen
 *
 */
 class Adapter2  implements Target{
    private Adapee adapee;
    
    // 可以通过构造函数传入具体需要适配的被适配类对象  
    public Adapter2 (Adapee adaptee) {  
        this.adapee = adaptee;  
    } 
 
@Override
public void bulbOfSeven() {
// 5w转7w
}


@Override
public int voltage() {
//110f转220f电压
return adapee.voltageOFFive() * 2;
}
   
}
/**
 *  使用
 * @author lizhen
 *
 */
public class main {


public static void main(String[] args) {
         //类转换
Adapter adapter=new  Adapter();
adapter.bulbOfFive();//原有的灯泡
adapter.voltageOFFive();//110f
adapter.bulbOfSeven();//转换灯泡
adapter.voltage();//110转换电压220
//对象转换
Adapee adapee=new Adapee();//现有的灯泡
Adapter2 adapter2=new Adapter2(adapee);
adapter2.bulbOfSeven();转换灯泡
adapter2.voltage();//110转换电压220
}


}
                         

                   大体就是将5w灯泡110f变成我想的7w灯泡220f  这里现有的类 也可以是接口 自己动手弄一下吧

   
          缺省适配(Default Adapter)模式  
                    摘抄于 http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html
             为 一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。作为适配器模式的一个特例,缺省是适配模式在JAVA语言中有着特殊的应用
           他的例子举的很生动,很有感觉 --------------------------- 鲁智深的故事
           从这个故事你知道了什么?
           接口定义的泛指,然而显示总有那么几个刁民,不遵从,这个时候可以使用啦
           从而可以解决没有用的方法实习
           对于特殊的子类,可以使用这个特殊的模式
            适配器模式的用意是要改变源的接口,以便于目标接口相容。缺省适配的用意稍有不同,它是为了方便建立一个不平庸的适配器类而提供的一种平庸实现。
           总结:能力有限,望批评指教
                                 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值