装饰模块与单向适配器模式比较

package com.donnie;
//单向适配器模式
/*class ReadStrFromFile{
	public void read(){
		System.out.println("从文件上读取字符串");
	}
}
class Convert{
	public void toUpper(){
		System.out.println("转大写");
	}
}
class SubReadStrFromFile extends ReadStrFromFile{
	private Convert convert;
	public SubReadStrFromFile(Convert convert){
		this.convert=convert;
	}
	public void read(){
		super.read();
		convert.toUpper();
	}
}
public class Decorate {
public static void main(String args[]){
	SubReadStrFromFile sf=new SubReadStrFromFile(new Convert());
	sf.read();
}
}*/
//-----------------------------------------
/*单向适配器模式是在主模块上接入一个扩展模块,用继承方法
 * 优势是:能够很好的应付扩展模块的切换
 * 缺陷:扩展模块无法很好的应付主模块的切换
 * 假如上面的扩展模块Convert为主模块ReadStrFromFile服务,但又得为另一个主模块ReadStrFromNet服务
 * 单向适配器,就必须得为ReadStrFromNet再写一个子类,这样就麻烦
 */
//装饰模式要点,主模块的接口注入扩展模块
interface Iread{
	public abstract void read();
}
class ReadStrFromFile implements Iread{
	public void read(){
		System.out.println("从文件上读取字符串");
	}
}
class ReadStrFromNet implements Iread{
	public void read(){
		System.out.println("从网络上读取字符串");
	}
}
class Convert {
	private Iread iread;
	public Convert(Iread iread){
		this.iread=iread;
	}
	public void toUpper(){
		iread.read();
		System.out.println("转大写");
	}
}

public class Decorate {
public static void main(String args[]){
	Convert ct=new Convert(new ReadStrFromNet());
	ct.toUpper();
}
}
/*
 * 现实中案例java读中文的方法就是用到装饰模式
 * FileReader fis= new FileReader(“filaname”);
BufferedReader br= new BuffreedReader(fis);

单向适配器模式与装饰模式要点相比,就是考滤,哪些模块切换的可能性大些

模式提供了一个解决方案,它是一种设计方法
为了降低耦合性增加灵活性
Spring是提供了降低耦合性的一种工具
设计模式提供了常见应用中降低耦合性的设计思想
具体问题还得具体分析*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值