基于人吃饭的例子设计一个装饰设计模式:
2016-03-12 09:15
288 查看
/*
* 装饰设计模式:
* 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,
* 基于已有的功能,并提供加强功能。那么自定义的该类型称为装饰类
* 装饰类通常会通过构造方法接收被装饰对象。
* 并基于被装饰的对象的功能,提供更强的功能。
* 装饰模式比继承模式要灵活。避免了继承体系臃肿,而且降低了类与类的关系
* 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强大的功能
* 所以装饰类和被装饰类通常是都属于同一个体系中的。
* 找到其参数的共同类型,通过多态的形式,可以提高扩展性。
*/
public class PersonDemo {
public static void main(String[] args) {
Person.eat();
SuperPerson.superEat();
}
}
//当人吃的比较好的时候是不是要增强吃饭的方法
class SuperPerson{
private static Person p;
public SuperPerson(Person p) {
super();
this.p = p;
}
public static void superEat() {
System.out.println("开胃酒");
p.eat();
System.out.println("甜点");
System.out.println("咖啡");
}
}
//定义一个人吃饭的功能
class Person{
public static void eat() {
System.out.println("吃饭");
}
}
* 装饰设计模式:
* 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,
* 基于已有的功能,并提供加强功能。那么自定义的该类型称为装饰类
* 装饰类通常会通过构造方法接收被装饰对象。
* 并基于被装饰的对象的功能,提供更强的功能。
* 装饰模式比继承模式要灵活。避免了继承体系臃肿,而且降低了类与类的关系
* 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强大的功能
* 所以装饰类和被装饰类通常是都属于同一个体系中的。
* 找到其参数的共同类型,通过多态的形式,可以提高扩展性。
*/
public class PersonDemo {
public static void main(String[] args) {
Person.eat();
SuperPerson.superEat();
}
}
//当人吃的比较好的时候是不是要增强吃饭的方法
class SuperPerson{
private static Person p;
public SuperPerson(Person p) {
super();
this.p = p;
}
public static void superEat() {
System.out.println("开胃酒");
p.eat();
System.out.println("甜点");
System.out.println("咖啡");
}
}
//定义一个人吃饭的功能
class Person{
public static void eat() {
System.out.println("吃饭");
}
}
相关文章推荐
- 3*3矩阵转置
- 一句话理解innerHeight,(document.documentElement,document.body) / clientHeight,offsetHeight的区别和用法
- matlab 图像fft
- PHP路径相关 dirname,realpath,__FILE__
- 第二周学习进度
- 杨幂win7主题
- ubuntu14.04安装搜狗输入法错误
- DOM table 隔行变色
- Ubuntu下的PHP开发环境架设
- matlab 符号运算
- 输出系统的属性到指定文件中并在控制台上显示
- 包装工具类
- Shortest Sum Path(Option Pricing: Trinomial Tree)
- Python之路【第十五篇】WEB框架
- python 异步IO
- Keeplived配置Nginx双机高可用
- 汉诺塔III
- struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素
- 数据存储结构
- 欢迎使用CSDN-markdown编辑器