设计23式—适配器

本文介绍了一种软件设计模式——适配器模式,并通过具体的Java代码示例展示了如何使用该模式来解决不同系统间接口不兼容的问题。通过适配器,实现了两个不同接口之间的转换,提高了系统的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * 适配器模式
 * 优点
 * 类的透明性
 * 类的复用度
 * 灵活性
 */
public class MyMain {


	public static void main(String[] args) {
		System.out.println("-----------------------------");
		//A系统获取数据方式
		AUserInfo aUserInfo=new AUserInfo("老ii", "099888", "男");
		System.out.println(aUserInfo.getUserNameA());
		System.out.println(aUserInfo.getUserPasswordA());
		System.out.println(aUserInfo.getUserSexA());
		System.out.println("-----------------------------");
		//B系统获取数据方式
		BUserInfo bUserInfo=new BUserInfo();
		System.out.println(bUserInfo.getUserNameB(5));
		System.out.println(bUserInfo.getUserPasswordB(5));
		System.out.println(bUserInfo.getUserSexB(5));
		System.out.println("-----------------------------");
		//通过A系统获取用户数据的方式获取B系统的数据
		IAUserInfo abUserInfo=new ABUserInfo();		
		System.out.println(abUserInfo.getUserNameA());
		System.out.println(abUserInfo.getUserPasswordA());
		System.out.println(abUserInfo.getUserSexA());
		System.out.println("-----------------------------");
	}


}
//A系统获取用户信息方式的接口
interface IAUserInfo{
	//获取用户名,密码,性别
	abstract public String getUserNameA();
	abstract public String getUserPasswordA();
	abstract public String getUserSexA();
}
//B系统获取用户信息方式的接口
interface IBUserInfo{
	//获取用户名,密码,性别
	abstract public String getUserNameB(int i);
	abstract public String getUserPasswordB(int i);
	abstract public String getUserSexB(int i);
}
//实现A接口的用户
class AUserInfo implements IAUserInfo{
	String userName,userPassword,Sex;
	public AUserInfo(String userName,String userPassword,String Sex) {
		this.Sex=Sex;
		this.userName=userName;
		this.userPassword=userPassword;
	}
	@Override
	public String getUserNameA() {
		return userName;
	}


	@Override
	public String getUserPasswordA() {
		return userPassword;
	}


	@Override
	public String getUserSexA() {
		return Sex;
	}
}
//实现B接口的用户
class BUserInfo implements IBUserInfo{
	int count=0;
	ArrayList<String> userNames=new ArrayList<>();
	ArrayList<String> userPasswords=new ArrayList<>();
	ArrayList<String> userSexs=new ArrayList<>();
	//初始化数据
	public BUserInfo() {
		for(int i=0;i<10;i++)
		{
			userNames.add("老"+i);
			userPasswords.add(i+"......."+i);
			userSexs.add(i%2==1?"男":"女");
		}
	}


	@Override
	public String getUserNameB(int i) {
		return userNames.get(i);
	}


	@Override
	public String getUserPasswordB(int i) {
		return userPasswords.get(i);
	}


	@Override
	public String getUserSexB(int i) {
		return userSexs.get(i);
	}
	
}
//适配器
class ABUserInfo extends BUserInfo implements IAUserInfo{
public ABUserInfo() {
	super();
}
	@Override
	public String getUserNameA() {
		return getUserNameB(new Random().nextInt(10));
	}


	@Override
	public String getUserPasswordA() {
		return getUserPasswordB(new Random().nextInt(10));
	}


	@Override
	public String getUserSexA() {
		return getUserSexB(new Random().nextInt(10));
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值