まず、アクションで使用されるすべての actionPerformed にパブリック メソッドを提供する必要があります (createPerson、removePerson など)。これらすべてのアクション メソッドは 1 つのクラスにある必要があります (私はそれを PersonController と呼びます)。次に、AbstractPersonAction を定義する必要があります。
public class AbstractPersonAction extends AbstractAction {
private PersonController controller;
public AbstractPersonAction(PersonController aController) {
controller = aController;
}
protected PersonController getController() {
return controller;
}
}
これで、すべてのアクションを個別のクラスに抽出できます。
public class CreatePersonAction extends AbstractPersonAction {
public CreatePersonAction(PersonController aController) {
super(controller);
}
public void actionPerformed(ActionEvent ae) {
getController().createPerson();
}
}
これらのアクションは、外部クラスの一部にすることも、別の「アクション」パッケージに配置することもできます。