「Androidソース設計モード解析と実戦」コマンドモード

1421 ワード

コマンドモード:受信者(実行者)内で具体的なイベントを実現する.コマンドクラスは受信者の参照を持ち、受信者を呼び出す方法を提供する.リクエスト者は1つ以上のコマンドを持ち、コマンドを呼び出す方法を提供する.
受信者(実行者)

public class Receiver {
private static final String TAG = "Receiver";
public void action() {
    Log.i(TAG, "action: ");
}
}コマンドクラス

public interface Command {
void execute();
}
public class CommandImpl implements Command {
private Receiver receiver;
public CommandImpl(Receiver receiver) {
    this.receiver = receiver;
}

@Override
public void execute() {
    receiver.action();
}
}リクエスト

public class Invoker {
private Command command;
public Invoker(Command command) {
    this.command = command;
}

public void action() {
    command.execute();
}
}
 
 

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Receiver receiver = new Receiver();
    Command command = new CommandImpl(receiver);
    Invoker invoker = new Invoker(command);
    invoker.action();
}

} log

03-10 19:14:48.843 15277-15277/com.lerz.commanddemo I/Receiver: action: