Dans les systèmes logiciels, "Demandeur de comportement " et "implémenteur de comportement " présentent généralement une sorte de "Couplage serré". Mais dans certaines situations, telles que « enregistrement, annulation/rétablissement, transaction » et autres traitements de comportements, ce type de couplage étroit qui ne peut pas résister aux changements est inapproprié. Dans ce cas, comment découpler le « demandeur de comportement » du « implémenteur de comportement » ? Résumez un ensemble de comportements de en objets , et réalisez un couplage lâche entre les deux . Voici le Modèle de commande
Diagramme de classes
public interface ICommand { void execute(); }
public class ConcreteCommand implements ICommand { private Receiver receiver; public ConcreteCommand(Receiver receiver) { this.receiver = receiver; } @Override public void execute() { this.receiver.action(); } }
public class Receiver { public void action() { System.out.println("receiver do something"); } }
public class Invoker { private ICommand command; public Invoker(ICommand command) { this.command = command; } public void invoke() { this.command.execute(); } }
/* * 命令(Command)模式 * 请求与执行 分离 * 可以多个命令接口的实现类,隐藏真实的被调用方 */ public class Test { public static void main(String[] args) { Receiver receiver = new Receiver();//真正的执行者 ICommand command = new ConcreteCommand(receiver);//具体命令 Invoker invoker = new Invoker(command );//调用者 invoker.invoke(); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!