西南科技大学计算机学院 《面向对象系统分析和设计》实验报告
@Override
public String fly() {
System.out.println(\亚音速飞行\); return \亚音速飞行\; } }
public interface state {
public String takeOff();//起飞 public String fly();//飞行 }
public class Client {
public static void main(String args[]) {
plane plane = new plane();
plane.setplanetype(\歼击机\); plane.takeoff(); plane.fly(); } }
3) 实现结果:
5. 儿子、妈妈、父亲三人合作画一幅画,儿子负责画出一朵花的轮廓,妈妈负责涂上颜色、父亲负责将画裱在画框里。现请使用装饰模式模拟这个过程。
1) 类图
9
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告
2) 实现代码:
public interface painting { public String Draw();
}
public class Son implements painting{ @Override
public String Draw() {
System.out.println(\儿子用笔画出了花的轮廓\); return \儿子用笔画出了花的轮廓\; } }
public class Father implements painting{
private painting painting;//被装饰者 public Father(painting painting) { this.painting =painting; }
private Father() {} public void paint() {
//爸爸装饰者做的职责
System.out.println(\爸爸正在做上画框前的准备工作\); painting.Draw();//爸爸装饰者做职责
System.out.println(\父亲将画裱在画框里\); }
@Override
public String Draw() {
System.out.println(\父亲将画裱在画框里\); return \父亲将画裱在画框里\; } }
public class Mother implements painting{
private painting painting;//被装饰者
10
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告
public Mother(painting painting) { this.painting =painting; }
private Mother() {} public void paint() {
System.out.println(\妈妈正在做给画上颜色前的准备工作。\); painting.Draw();//妈妈装饰者做的职责
System.out.println(\妈妈给画上好了颜色\); }
@Override
public String Draw() {
System.out.println(\妈妈给画上好了颜色\); return \妈妈给画上好了颜色\; }
}
public class Client {
public static void main(String[] args){ painting painting =new Son(); painting.Draw();
painting = new Mother(painting); painting.Draw();
painting = new Father(painting); painting.Draw(); }
}
3) 实现结果:
6. 某公司想通过网络传输数据,但是担心文件被窃取。他们的所有数据都采用字符的方式传送。现在他们开发了一个数据加密模块,可以对字符串进行加密,以便数据更安全地传送。最简单的加密算法通过对字母向后移动6位来实现,同时还提供了稍复杂的逆向输出加密,还提供了更为高级的求模加密,让每一位与6求模。
用户先使用最简单的加密算法对字符串进行加密,再对加密之后的结果使用复杂加密算
11
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 法进行二次加密,再对二次加密结果用高级加密算法进行第三次加密。现请使用装饰模式模拟这个过程。
1) 类图
2) 实现代码:
public class ConcreteEncrypt implements EncryptComponet{ private EncryptComponet encryptComponet;
public ConcreteEncrypt(EncryptComponet encryptComponet) { super();
this.encryptComponet = encryptComponet; }
public void encrypt() {
encryptComponet.encrypt(); }
}
public interface EncryptComponet { public abstract void encrypt();
}
public class RawData implements EncryptComponet{ public void encrypt() {
System.out.println(\这是要发送的数据\); } }
public class ReversEncrypt implements EncryptComponet{
public ReversEncrypt(EncryptComponet encryptComponet) { addReservesEncrypt(); }
12