Android基础-java的装饰模式

什么是装饰模式:

按我的理解,装饰模式就相当于装潢,买了一个房子,里面有厨房,厕所,客厅等等,但是它们可能并不完全,比如说,客厅缺少沙发,厨房缺少餐具,装潢就是要将它们补全。而装饰模式就是相当于装潢,写代码不可能面面俱到,总有遗漏,去修改一个类,不如去添加一个新类,去补充。

如何制造一个装饰模式:

首先,我们需要一个接口,就像这样:

public interface Person {

	void dosomething();
}

既然有了接口,我们就得去实现它,像这样:

public class Teacher implements Person {

	

	@Override
	public void dosomething() {
		// TODO Auto-generated method stub
		System.out.println("我会教书");
	}

}
按照正常思路,到这里,我们就应该写我们的主类,然后通过主类中的main函数new一个Teacher,然后调用Teacher中dosomething函数输出打印。但是,很显然,很多时候,我们需要的信息远远不止这些,如此程序中,我们不仅想知道这个老师会教书,还想知道他来自哪个学校。当然,在Teacher中直接添加打印输入在本程序中十分简单,但是如果程序很大,需要修改的内容很多,或者是Teacher类不允许我们修改,该怎么办,这里就需要用到装饰模式。

接下要做的就是,再新建一个类,像这样:

public class DecoratorTeacher implements Person {

	private Person p;  //精髓在这里

	public DecoratorTeacher(Person p) {  //主函数可以new一个该类的对象,并传入,传入的自然是Person接口的子类,可以向上转型成Person类
		this.p = p;
	}

	@Override
	public void dosomething() {
		// TODO Auto-generated method stub
		System.out.println("我是XX大学的老师");
		p.dosomething();      //然后,这里的p就是传入的子类了,虽然它的类型是Person类,但并没影响该子类里的内容
	}

}
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Teacher teacher = new Teacher();
		DecoratorTeacher dt = new DecoratorTeacher(teacher);
		dt.dosomething();
	}

}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值