[关键字]:java,design pattern,设计模式,《Java与模式》学习,composite,合成模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:
安全的合成模式
package pattern.composite.safe;
import java.util.*;
/**
* 安全的合成模式:Composite Pattern
* @version 2009-6-3
* @author Winty(wintys@gmail.com)
*/
public class SafeCompositeTest{
public static void main(String[] args){
Graphics g1 , g2;
Picture p1 , p2;
g1 = new Line();
g2 = new Circle();
p1 = new Picture();
p2 = new Picture();
g1.draw();
g2.draw();
System.out.println("");
p1.add(g1);
p1.add(g2);
p1.draw();
System.out.println("");
p2.add(g1);
p2.add(g2);
p2.add(p1);
p2.draw();
}
}
/**
* 抽象Component角色
*/
interface Graphics{
void draw();
}
/**
* Leaf角色
*/
class Line implements Graphics{
@Override
public void draw(){
System.out.println("draw a line.");
}
}
/**
* Leaf角色
*/
class Circle implements Graphics{
@Override
public void draw(){
System.out.println("draw a circle");
}
}
/**
* Composite角色
*/
class Picture implements Graphics{
private List<Graphics> graphics;
public Picture(){
graphics = new ArrayList<Graphics>();
}
@Override
public void draw(){
Iterator<Graphics> it = graphics.iterator();
while(it.hasNext()){
Graphics g = it.next();
g.draw();
}
}
public void add(Graphics g){
graphics.add(g);
}
public void remove(int i){
graphics.remove(i);
}
public Graphics getChild(int i){
return graphics.get(i);
}
}
运行结果:
draw a line.
draw a circle
draw a line.
draw a circle
draw a line.
draw a circle
draw a line.
draw a circle
- 大小: 33.1 KB
分享到:
相关推荐
- **深拷贝**:创建一个新对象,并复制原对象的所有非引用类型字段的值,对于引用类型字段,则递归地进行深拷贝。 - **重写`clone`方法实现深拷贝**:通过覆盖`Object`类的`clone`方法,实现对象及其内部引用...
近年来,随着技术、安全性和多样性等方面的不断创新,合成革行业的市场需求呈现爆发式增长态势。这不仅促进了产业链上游原材料供应的转型与升级,同时也推动了下游产品的更新迭代,以更好地满足消费者的多样化需求。...
它可以通过改变游戏代码、模型、纹理、音效等元素,增加新的生物、道具、机制,甚至创建全新的游戏模式。在《我的世界》中,MOD的存在极大地丰富了游戏的可玩性,让每个玩家都能根据自己的喜好定制游戏体验。 "G键...
- 代理模式:为对象提供代理以控制对原对象的访问,可以用于远程代理、虚拟代理、安全代理等。 - 外观模式:提供一个简单的接口来访问复杂的子系统,降低了系统的复杂度。 - 桥接模式:将抽象部分与实现部分分离...
尽管合成生物学领域充满机遇,但也存在一些风险,如项目进度延迟、生物质原材料价格波动、宏观经济波动、进出口政策变动以及生物安全和伦理问题。然而,行业领导者通过构建综合竞争力,已经建立了坚固的行业壁垒,...
然而,合成生物学的发展也面临一些风险,包括项目实施进度延迟、生物质原材料价格波动、经济和下游行业不确定性、国际贸易环境变化以及生物安全和伦理问题。尽管如此,鉴于其在碳中和趋势下的独特优势和巨大的市场...
二是高效的供应链管理能力,确保原材料的稳定供应和产品的快速交付;三是优质的客户服务,包括技术支持和售后服务等;四是合理的定价策略,在保证利润的同时保持竞争力。 ##### 多肽合成试剂行业前景预测 **发展...
- **多曝光HDR**:通过捕获多张不同曝光级别的图像,并将其合成来扩展动态范围。 - **数字重叠HDR**:利用数字信号处理技术,在图像处理阶段实现HDR效果。 ##### 4. 输出配置 - **接口标准**:支持CSI-2标准,可以...
- **原材料供应**:合成纤维绳的主要原材料供应稳定,但需关注原材料价格波动可能带来的成本压力。 - **生产制造**:欧洲企业在生产制造方面拥有先进的技术和设备,能够满足高质量的生产需求。 - **物流配送**:高效...
7. 合成模式(Composite):将对象组织成树形结构,表示部分-整体的关系,使得客户端可以统一处理单个对象和组合对象。 8. 装饰模式(Decorator):动态地给对象添加新功能,比继承更灵活,不会破坏类的封装性。 9...
合成生物学的本质是让细胞为人类工作生产想要的物质,与传统化学合成相比,合成生物学具有微型化、可循环、更安全的特点;与传统发酵工程相比,合成生物学对细胞的干预是定向的。合成生物学有望移步幕前,成为人类...
AIGC人工智能合成媒体 AIGC(Artificial Intelligence Generated Content / AI-Generated Content)是近年来人工智能领域的研究热点之一。它是指利用人工智能算法生成内容的技术,能够自主生成文本、图像、音乐、...
4. 导出:最后,生成的图种文件通常保留原图片格式,如.jpg或.png,但包含了隐藏的压缩包数据。当用户使用特定的解压工具修改文件扩展名并打开时,就能恢复出原始的压缩包内容。 图种技术的运用场景广泛,包括但不...
代理模式是一种结构型设计模式,给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 **应用场景:** 当需要给某个对象提供一个代理以控制对这个对象的访问时,可以使用代理模式。 **优点:** - 给调用者...
A301型氨合成催化剂行业市场突围建议及需求分析报告深入探讨了这一特定领域的市场前景、政策环境、运行趋势以及发展模式。以下是基于报告内容的关键知识点解析: 1. **市场预测与分析**: - 时间序列预测:这是一...
mRNA疫苗是一种新型疫苗,它的出现彻底改变了疫苗的研发和生产模式。mRNA疫苗的核心是利用mRNA将人体细胞转化为产生特定蛋白质的工厂,进而激发人体免疫反应以抵御特定病原体。mRNA疫苗的关键原材料包括质粒DNA模板...
通过不断的研究和开发,这些材料和技术有望为电子政务带来更高效、安全和可持续的服务模式。但是,要真正实现这些应用,还需结合电子政务的实际需求,并针对技术的成熟度进行综合评估和试验验证。未来,随着材料科学...
- 良性循环原则:追求可持续发展的农业模式,减少环境污染。 8. 《有机产品国家标准》的内容: - 生产:规定有机产品的生产方法和标准。 - 加工:对加工过程中的卫生、安全要求进行规定。 - 标志与销售:规范...