Java与模式:装饰(Decorator)模式
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 12:51:06
* 项目
*/
public interface Project {
/**
* 写代码
*/
void doCoding();
}
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 12:52:12
* 代码工人
*/
public class Employe implements Project{
/**
* 编码
*/
public void doCoding(){
System.out.println("代码工人 在编写代码,加班编啊编啊,终于编完了!");
}
}
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 12:51:26
* 项目经理
*/
public class Manager implements Project {
private Project project; //实际上存放的是代码工人对象
public Manager(Project project) {
this.project = project;
}
/**
* 编码
*/
public void doCoding() {
//项目经理开始新的工作
startNewWork();
}
/**
* 模板:定义项目经理自己的事情
*/
public void startNewWork() {
//项目经理在做早期工作
doEarlyWork();
//项目经理很牛,做完需求和设计后,直接将编码委派给代码工人干
project.doCoding();
//项目经理在做收尾工作
doEndWork();
}
/**
* 项目经理自己的事情:做早期工作
*/
public void doEarlyWork() {
}
/**
* 项目经理做收尾工作
*/
public void doEndWork() {
}
}
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 13:45:18
* 具体的项目经理A
*/
public class ManagerA extends Manager{
public ManagerA(Project project) {
super(project);
}
/**
* 项目经理自己的事情:做早期工作
*/
public void doEarlyWork() {
System.out.println("项目经理A 在做需求分析");
System.out.println("项目经理A 在做架构设计");
System.out.println("项目经理A 在做详细设计");
}
}
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 13:45:27
* 具体的项目经理B
*/
public class ManagerB extends Manager {
public ManagerB(Project project) {
super(project);
}
/**
* 项目经理自己的事情:做早期工作
*/
public void doEarlyWork() {
System.out.println("项目经理B 在做需求分析");
System.out.println("项目经理B 在做详细设计");
}
/**
* 项目经理做收尾工作
*/
public void doEndWork() {
System.out.println("项目经理B 在做收尾工作");
}
}
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-3 13:03:22
* 客户端测试
*/
public class Client {
public static void main(String args[]) {
Project employe = new Employe(); //代码工人
Project managerA = new ManagerA(employe); //项目经理
Project managerB = new ManagerB(employe); //项目经理
//以经理的名义将编码完成,功劳都是经理的,实际编码的是工人
managerA.doCoding();
managerB.doCoding();
}
}
项目经理A 在做架构设计
项目经理A 在做详细设计
代码工人 在编写代码,加班编啊编啊,终于编完了!
项目经理B 在做需求分析
项目经理B 在做详细设计
代码工人 在编写代码,加班编啊编啊,终于编完了!
项目经理B 在做收尾工作
Process finished with exit code 0
Java与模式:装饰(Decorator)模式相关推荐
- Java设计模式之再从[暗黑破坏神装备镶嵌宝石系统]分析装饰(Decorator)模式
在暗黑破坏神等RPG游戏中,会遇到如下的一些场景:我有一把很普通的武器,我通过给它"注入魔法力量"."镶嵌宝石",来使得它拥有一些攻击特效:例如,一把普通长剑, ...
- Java设计模式(装饰者模式-组合模式-外观模式-享元模式)
Java设计模式Ⅳ 1.装饰者模式 1.1 装饰者模式概述 1.2 代码理解 2.组合模式 2.1 组合模式概述 2.2 代码理解 3.外观模式 3.1 外观模式概述 3.2 代码理解 4.享元模式 ...
- Java 设计模式之装饰者模式
一.了解装饰者模式 1.1 什么是装饰者模式 装饰者模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰者来包裹真实的对象. 所以装饰者可以动 ...
- 设计模式学习笔记——装饰(Decorator)模式
设计模式学习笔记--装饰(Decorator)模式 @(设计模式)[设计模式, 装饰模式, decorator] 设计模式学习笔记装饰Decorator模式 基本介绍 装饰案例 类图 实现代码 Dis ...
- java中的装饰者模式[63]
java中的装饰者模式[63] 文章目录 java中的装饰者模式[63] 一.什么是装饰者模式? 二.装饰者模式要点 三.代码演示 四.小结 一.什么是装饰者模式? **1.意图:**动态的给一个对象 ...
- Java设计模式 -10- 装饰器模式(Decorator模式)
Java设计模式 -10- 装饰器模式(Decorator模式) 前言 装饰器模式的定义与特点 优点: 缺点: 装饰器模式的结构与实现 1. 模式的结构 2. 模式的实现 装饰器模式的应用实例 装饰器 ...
- 设计模式:装饰(Decorator)模式
设计模式之装饰(Decorator)模式 在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修.相片加相框等.在软件开发过程中,有时想用一些现存的组件.这些组件可能只是完成了一些核心功 ...
- java设计模式之 装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装 ...
- 也说说“从Adapter模式到Decorator模式”
为什么80%的码农都做不了架构师?>>> 终于有时间写点什么了,可以前酝酿好的东西似乎一下子都忘记了.这几天看了wayfarer的<<让僵冷的翅膀飞起来>系列 ...
- Java 8的装饰器模式
在最近的一篇文章中,我描述了装饰器模式如何拯救了我的一天. 我给出了一个小代码段,其中包含创建装饰器的最简单方法,但承诺Java 8会有更好的方法. 这里是: 用Java 8装饰 HyperlinkL ...
最新文章
- 【Luogu】P1613 跑路
- CSS上下左右居中的几种方法
- Linux_进程管理计划任务
- wxWidgets:位图和图标
- centos7升级gcc到5.3.0
- 专业摄影旗舰!vivo X30系列正式发布:支持60倍超级变焦
- 【考试记录】20181003
- godaddy 安装 ssl
- shrink_page_list 函数分析
- 线性代数学习指导与MATLAB编程实践,线性代数学习指导与MATLAB编程实践(邵建峰)...
- 02. Yii 2.0 框架的目录结构
- namenode启动报错:There appears to be a gap in the edit log. We expected txid 1, but got txid 16
- 常用照片尺寸和纸张尺寸参考
- 小米也打价格战?会有1999的小米2吗?
- 大数据华而不实么?大数据的本质是什么?
- 出圈c语言,c语言作业 出圈游戏
- 清晰度、分辨率、像素、4K、HDR的区别
- 案件精灵9判断坐标颜色变化发出提示音(按键精灵9接收通知必备)
- 10款 Mac 经典原型设计开发软件推荐
- 哈勃发现史上最遥远单颗恒星 距离地球129亿光年