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

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

Java設(shè)計(jì)模式——裝飾模式——主干確定 調(diào)整細(xì)節(jié)

场景

装饰模式主要适用于主干功能都已确定,在外围功能上可以随意添加模块的情况。

例如,对字符串进行编码,主干功能是对字符串进行加密,后来还想实现再字符串头部和尾部添加标志符。

由于不同的对接客户端对标志符的要求不同,此处就可以使用装饰模式,在完成加密后,装饰不同的头部、尾部标志符。

实例

我们的目的还是编码,所以定义一个编码接口。

/**
 * 编码器接口
 */
public interface Encoder {
	public String execute(String input);
}

定义一个主要编码器,实现加密算法。

/**
 * 主要编码器
 */
public class MainEncoder implements Encoder {
	@Override
	public String execute(String input) {
		input=input.replaceAll("1", "q");
		input=input.replaceAll("2", "w");
		input=input.replaceAll("3", "e");
		input=input.replaceAll("4", "r");
		return input;
	}
}

定义一个装饰器,用于装饰编码结果的头部。注意,实现Encoder接口是为了保证装饰器主要功能也是编码,是为了规范装饰器的主要行为。装饰器通过调用主要编码器来实现主干功能,然后附加一部分装饰器的功能,即头部添加"#"

/**
 * 头部装饰器
 */
public class HeadDecorator implements Encoder {
	private Encoder encoder;
	public HeadDecorator(Encoder encoder) {
		this.encoder = encoder;
	}
	@Override
	public String execute(String input) {
		if (encoder != null) {
			return "#" + encoder.execute(input);
		} else {
			return "";
		}
	}
}

定义一个装饰器,用于装饰编码结果的尾部。装饰器可以定义无数个,根据需要定义即可。

/**
 * 尾部装饰器
 */
public class TailDecorator implements Encoder {
	private Encoder encoder;
	public TailDecorator(Encoder encoder) {
		this.encoder = encoder;
	}
	@Override
	public String execute(String input) {
		if (encoder != null) {
			return encoder.execute(input) + "$";
		} else {
			return "";
		}
	}
}

测试,通过为编码器追加两个装饰器,来实现对编码结果的额外装饰效果:

public class Main {
   public static void main(String[] args) {
   	MainEncoder main = new MainEncoder();
   	HeadDecorator head = new HeadDecorator(main);
   	TailDecorator tail = new TailDecorator(head);
   	System.out.println(tail.execute("1234"));// 输出#qwer$
   }
}
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

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

評(píng)論

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

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

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

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

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

購(gòu)課補(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
提交
取消