适配器模式(Adapter)(对象结构型模式)

来源:互联网 发布:java数组如何调用方法 编辑:程序博客网 时间:2024/06/05 01:51

参考文档:

1.设计模式-可复用面向对象软件的基础

2.http://blog.csdn.net/guolin_blog/article/details/9400141(Java设计模式透析之 —— 适配器(Adapter))


适配器模式(Adapter)(对象结构型模式)

理论方面的知识,请查看参考文档的内容。

看一下adapter的结构:

类适配器,在java中的实现,表现为实现多个接口类,进行匹配:


对象适配器,在java中的实现,表现为对象组合:



代码实现,案例是参考文档2中的,实现的方式是:对象适配器,实现adapter的类:ServerOne.java。

PlayerCount.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public interface PlayerCount {    String getServerName();    int getPlayerCount();}
ServerOne.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class ServerOne implements PlayerCount {    @Override    public String getServerName() {        return "1服";    }    @Override    public int getPlayerCount() {        return new ServerFirst().getOnlinePlayerCount();    }}
ServerTwo.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class ServerTwo implements PlayerCount {    @Override    public String getServerName() {        return "2服";    }    @Override    public int getPlayerCount() {        return Utility.getOnlinePlayerCount(2);    }}
ServerThree.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class ServerThree implements PlayerCount {    @Override    public String getServerName() {        return "3服";    }    @Override    public int getPlayerCount() {        return Utility.getOnlinePlayerCount(3);    }}
Utility.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class Utility {    public static int getOnlinePlayerCount(int i) {        return (int) (Math.random() * 100);    }}
ServerFirst.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class ServerFirst {    public int getOnlinePlayerCount() {        return (int) (Math.random() * 100);    }}
Client.java:
package com.rick.designpattern.adapter;/** * Created by MyPC on 2017/6/29. */public class Client {    public static void main(String[] args) {        ServerOne one = new ServerOne();        System.out.println(one.getServerName() + "=" + one.getPlayerCount());        ServerTwo two = new ServerTwo();        System.out.println(two.getServerName() + "=" + two.getPlayerCount());        ServerThree three = new ServerThree();        System.out.println(three.getServerName() + "=" + three.getPlayerCount());    }}

原创粉丝点击