第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

設(shè)計(jì)模式之適配器模式

標(biāo)簽:
Java

最近想学习下设计模式,上个月我也在咱们慕课网中看了这个模式的视频了,一致没有写demo。今天在公司里把手里的事情忙完了,趁着空闲又查了下资料。写了个demo,然后把我自己的理解和demo把它们放出来。闲话少说现在就开始我代码之路。
适配器的概念我就不说了,网上一大推,我就说说我的理解吧(大白话,勿喷!)“两个(包括两个)以上的类相同功能的方法,提取出来,写成接口。再写个类也实现这个接口(这个类也就是适配器类),这个适配器类中要有个接口的属性,并实例化这个接口属性(写个方法了或是写在构造器中啊,都行)。最后就交给第三方调用了”。
代码来啦!!!
我先说下,我这个demo是根据网页中登录功能来想出来的,网页登录中不是有合作商吗!比如QQ、新浪微博、微信。。。等等
提取公用方法写成接口

package com.david.zookerper.adapter;

/**
 * Created by david on 2016/8/1.
 */
public interface LoginInterface {

    public void login();
}

在查找资料的时候,总是看到“被适配的类”,我就纠结“被适配的类”是什么东西,什么类被适配了,原来就是已经实现提取方法后形成接口的类。有时脑袋会短路,哎!!!

package com.david.zookerper.adapter.impl;

import com.david.zookerper.adapter.LoginInterface;

/**
 * Created by david on 2016/8/1.
 */
public class QQlogin implements LoginInterface {

    @Override
    public void login() {
        System.out.println("现在是以QQ方式登录");
    }
}
package com.david.zookerper.adapter.impl;

import com.david.zookerper.adapter.LoginInterface;

/**
 * Created by david on 2016/8/1.
 */
public class SinaLogin implements LoginInterface {
    @Override
    public void login() {
        System.out.println("现在是以新浪微博方式登录");
    }
}
package com.david.zookerper.adapter.impl;

import com.david.zookerper.adapter.LoginInterface;

/**
 * Created by david on 2016/8/1.
 */
public class WechatLogin implements LoginInterface {

    @Override
    public void login() {
        System.out.println("现在是以微信方式登录");
    }
}

下面这个类就是适配器类了,这才是适配器模式中最重点的

package com.david.zookerper.adapter.impl;

import com.david.zookerper.adapter.LoginInterface;

/**
 * 合作商
 * Created by david on 2016/8/1.
 */
public class Cooperative implements LoginInterface {

    private LoginInterface loginInterface;

    public void setLoginBusiness(LoginInterface loginBusiness){
        this.loginInterface = loginBusiness;
    }

    @Override
    public void login() {
        loginInterface.login();
    }
}

上面的适配器类,里面的内容想必都写过吧,不说还以为是普普通通的重构后的类哩!哈哈!!!
接下来的类就是调取适配器类了

package com.david.zookerper.adapter;

import com.david.zookerper.adapter.impl.Cooperative;
import com.david.zookerper.adapter.impl.QQlogin;
import com.david.zookerper.adapter.impl.SinaLogin;
import com.david.zookerper.adapter.impl.WechatLogin;

/**
 * 中间类
 * Created by david on 2016/8/1.
 */
public class Intermediate {

    public enum Enum {
        QQ,SINA,WECHAT
    }

   public void selectLoginMode(Enum e){
       Cooperative cooperative = new Cooperative();
       if(e == Enum.QQ){
           LoginInterface QQLogin = new QQlogin();
           cooperative.setLoginBusiness(QQLogin);

       }else if(e == Enum.SINA){
           LoginInterface SinaLogin = new SinaLogin();
           cooperative.setLoginBusiness(SinaLogin);
       }else{
           LoginInterface WechatLogin = new WechatLogin();
           cooperative.setLoginBusiness(WechatLogin);
       }
       cooperative.login();
   }
}

测试类

package com.david.zookeeper.demo2;

import com.david.zookerper.adapter.Intermediate;
import com.david.zookerper.adapter.Intermediate.Enum;
import org.junit.Test;

/**
 * Created by david on 2016/8/1.
 */
public class DesignPattern {
    @Test
    public void testIntermediate(){
        Intermediate intermediate = new Intermediate();
        intermediate.selectLoginMode(Enum.QQ);
        intermediate.selectLoginMode(Enum.SINA);
        intermediate.selectLoginMode(Enum.WECHAT);
    }
}

写到这个,这个demo就写完了,希望读者看完我写这篇文章能够理解适配器的实现,写的不好之处请大家指出来。小弟再次谢谢大家了

點(diǎn)擊查看更多內(nèi)容
6人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消