设计模式之适配器模式-2

灵魂三问?
1,什么是适配器模式?
2,它有什么用?
3,怎么用?

什么是适配器模式?

通俗点讲,我们都知道国家标准电压是220V,但是电脑所需电压却只有(此时反过来电脑看了一下)19.5V,但是我们给电脑充电的时候有个电源适配器,没错,就是那个黑疙瘩。它把220V电压转换为19.5V电压供我们电脑使用。在这里,电源适配器就充当了适配器角色。如果我们需要50V电压,只需要更换一下电源适配器,而不需要换电脑和标准电压。
适配器模式就是上述过程的抽象化,应用在类库设计,程序设计中来的一种设计模式。

它有什么用?

从上述过程我们看出,使用适配器模式设计程序,若果需求有变,比如我不想要19.5伏电压,我想要20伏电压,那么我只需要换一下电源会适配器就行了。

使用适配器模式设计程序,可以把功能提供者提供的功能适配到功能使用者。


怎么用?

使用适配器模式有两种用法:
使用继承的适配器和使用委托的适配器。下面分别看一下这两种方法的代码:
以下代码均打印如下结果:
在这里插入图片描述

使用继承的适配器

在这里插入图片描述

//功能提供者
public class Banner {
	
	
	private String string;
	
	
	public Banner(String string)
	{
		this.string=string;
	}
	
	
	public void showWithParen() 
	{
		System.out.println("("+string+")");
	}
	
	
	public void showWithAster()
	{
		System.out.println("*"+string+"*");
	}
}

//功能使用者
public interface Print {
	public abstract void printWeak();
	public abstract void printStrong();
}
//适配器,可以在这里修改以满足功能使用者
public class PrintBanner extends Banner implements Print {

	public PrintBanner(String string) {
		super(string);
	}
//测试主函数
	public static void main(String[] args) {
		Print p=new PrintBanner("Hello");
		p.printWeak();
		p.printStrong();	
	}

	@Override
	public void printWeak() {
		showWithParen();
		
	}

	@Override
	public void printStrong() {
		showWithAster();
	}

}

使用委托的适配器

委托这个词就是把事情交给其他人去做,在C#里面有这个概念,有兴趣的朋友可以去了解一下,C#里面的委托挺强大的。
在这里插入图片描述
这里主要是PrintBanner类和上面不同,其他都一样。

public class PrintBanner extends Print {
	private Banner banner;
	public static void main(String[]argc)
	{
		Print print=new PrintBanner("Hello");
		print.printWeak();
		print.printStrong();
	}
	public PrintBanner(String string)
	{
		this.banner=new Banner(string);
	}
	@Override
	public void printWeak() {
		// TODO Auto-generated method stub
		banner.showWithParen();
	}

	@Override
	public void printStrong() {
		// TODO Auto-generated method stub
		banner.showWithAster();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值