设计模式之略见一斑(适配器模式Adapter)
适配器模式就是基于客户提供的接口和功能,再此基础上实现具体业务功能。
它大体分为两类:类适配器与对象适配器
1.类适配器
类适配器就是本着在客户提供功能接口与业务BO的基础上实现业务功能。
该类需要继承第三方类并实现定义的接口,再在这个接口的方法实现中调用父类(即第三方类)中需要用到的方法。
先举个例子,我们每次登录QQ时,都会获取当天的新闻信息,假如我们定义一个通用的Customer,它包含有qnumber,loginDate,friends三个属性
public class Customer { private String qnumber;// Q号 private Date loginDate;// 登录日期 private List friends;// 获得好友信息 public Customer(String qnumber, Date loginDate, List friends) { super(); this.qnumber = qnumber; this.loginDate = loginDate; this.friends = friends; } public List getFriends() { return friends; } public void setFriends(List friends) { this.friends = friends; } public Date getLoginDate() { return loginDate; } public void setLoginDate(Date loginDate) { this.loginDate = loginDate; } public String getQnumber() { return qnumber; } public void setQnumber(String qnumber) { this.qnumber = qnumber; } }
public interface LoginEvent { //登录时获取新闻信息 public void getNews(); }
public class LinuxCostomer extends Customer implements LoginEvent{ public LinuxCostomer(String qnumber, Date loginDate, List friends) { super(qnumber, loginDate, friends); } public void getNews() { doGetNews(); } //处理获得信息 private void doGetNews(){ } <SPAN style="COLOR: #0000ff">public static void main(String[] args) { LinuxCostomer lc = new LinuxCostomer("272401534",new Date(0),new ArrayList()); lc.getNews(); }</SPAN> }
public abstract class LoginEvent { //网络连接 public void connectInternet(){ // init(); // ....and so on... } //登录时获取新闻信息 public abstract void getNews(); }
public class LinuxCostomer extends LoginEvent{ private Customer customer; public LinuxCostomer(Customer customer) { this.customer= customer; } public void getNews() { doGetNews(); } //处理获得信息 private void doGetNews(){ } public static void main(String[] args) { LinuxCostomer lc = new LinuxCostomer(new Customer("272401534",new Date(0),new ArrayList())); lc.getNews(); } }