interface Command { }
//请求接收者
class BoardScreen { }
//具体命令
class OpenCommand implements Command { }
//具体命令
class CreateCommand implements Command {
private BoardScreen myBoardScreen;
public CreateCommand(BoardScreen myBoardScreen) {
this.myBoardScreen=myBoardScreen; private BoardScreen myBoardScreen;
public OpenCommand(BoardScreen myBoardScreen) { }
public void execute() { }
myBoardScreen.open();
this.myBoardScreen=myBoardScreen; public void open() {
System.out.println(\!\); }
public void create() {
System.out.println(\!\); }
public void edit() {
System.out.println(\!\); }
void execute();
17
}
}
public void execute() { }
myBoardScreen.create();
//具体命令
class EditCommand implements Command { }
//客户端
public class MenueCommandClient {
public static void main(String a[]) { }
menu.getMenuItemByName(\).click();
menu.getMenuItemByName(\).click();
System.out.println(\); BoardScreen screen=new BoardScreen(); Menu menu=new Menu();
MenuItem itemOpen=new MenuItem(\,new OpenCommand(screen)); MenuItem itemCreate=new MenuItem(\,new
MenuItem itemEdit=new MenuItem(\,new EditCommand(screen)); menu.addMenuItem(itemOpen); menu.addMenuItem(itemCreate); menu.addMenuItem(itemEdit);
menu.getMenuItemByName(\).click();
System.out.println(\); private BoardScreen myBoardScreen;
public EditCommand(BoardScreen myBoardScreen) { }
public void execute() { }
myBoardScreen.edit();
this.myBoardScreen=myBoardScreen;
CreateCommand(screen));
18
}
运行结果:
(6) 迭代器模式
某商品管理系统的商品名称存储在一个字符串数组中,现需要自定义一个双向迭代器(MyIterator)实现对该商品名称数组的双向(前向和后向)遍历。绘制类图并编程实现(设计方案必须符合DIP)。
MyIteratorMyCollection+createIterator (): MyIterator+++++++++first ()last ()hasNext ()hasPrevious ()next ()previous ()isFirst ()isLast ()getCurrentItem (): void: void: boolean: boolean: void: void: boolean: boolean: ObjectNewCollection-obj: Object[]+<
package IteratorPattern;
interface MyCollection {
19
}
MyIterator createIterator();
//双向迭代器
interface MyIterator { }
class NewCollection implements MyCollection {
private Object[] obj={\,\,\,\,\};
//实现接口MyCollection的创建迭代器的方法 public MyIterator createIterator() {
return new NewIterator(); }
//内部类迭代器
private class NewIterator implements MyIterator {
private int currentIndex=0;
public void first() {
currentIndex=0; }
public void last() {
}
public void next() {
if(currentIndex void first(); void last(); void next(); void previous(); boolean hasNext(); boolean hasPrevious(); boolean isFirst(); boolean isLast(); Object currentItem(); 20

