西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 private void addReservesEncrypt() {
System.out.println(\反向加密\); }
@Override
public void encrypt() { } }
public class SuperEncrypt implements EncryptComponet{
public SuperEncrypt(EncryptComponet encryptComponet) { addSuperEncrypt(); }
private void addSuperEncrypt() {
System.out.println(\最高加密算法\); }
@Override
public void encrypt() { } }
public class TranslateEncrypt implements EncryptComponet{
public TranslateEncrypt(EncryptComponet encryptComponet) { addTranslateEncrypt(); }
private void addTranslateEncrypt() { System.out.println(\移动加密\); }
@Override
public void encrypt() { } }
public class Client {
public static void main(String[] args) { EncryptComponet s0,s1,s2,s3; s0 = new RawData();
s1 = new TranslateEncrypt(s0); s2 = new ReversEncrypt(s1); s3 = new SuperEncrypt(s2); s3.encrypt(); } }
7. 现需要设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫,像狗一样跑,使用适配器模式进行系统设计。
1)类图
13
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告
2) 实现代码
public interface Robot { public void cry(); public void move(); }
public class Dog {
public void barks(){ }
public class Dogadapter extends Dog implements Robot{ @Override
public void cry() { barks(); }
@Override
public void move() { run(); } }
public class Client {
public static void main(String[] args) { Dogadapter dogrobot = new Dogadapter(); dogrobot.move(); dogrobot.cry(); } }
14
System.out.println(\狗在叫\); }
public void run(){
System.out.println(\狗在跑\); }
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告
3) 实现结果
8. 在NBA作为外籍中锋,我需要翻译,具体场景描述如下: ? 姚明刚来到NBA,身材够高,球技够好; ? 但是英语不是很懂,听不懂教练的战术安排; ? 球员分为前锋、中锋和后卫; ? 教练会给球员分配进攻、防守任务。 现请使用适配器模式模拟这个场景。 1) 类图
2) 实现代码:
public abstract class Player {
protected String name; public Player(String name) {
this.name = name; }
15
西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 public abstract void attack(); public abstract void defense();
}
public class Guards extends Player {
public Guards(String name) {
super(name); }
public void attack() {
System.out.println(\后卫\ + name + \进攻\); }
public void defense() {
System.out.println(\后卫\ + name + \防守\); }
}
public class Center extends Player {
public Center(String name) {
super(name); }
public void attack() {
System.out.println(\中锋\ + name + \进攻\); }
public void defense() {
System.out.println(\中锋\ + name + \防守\); }
}
public class ForeignCenter {
private String name; public void attack() {
System.out.println(\外籍中锋\ + name + \进攻\); }
16