命令模式(Command Pattern),命令模式简单来说即是客户端提出操作请求、服务端接受到请求后调用服务、
而服务内部的细节是由服务的提供者所提供的,大白话来说就是客户向项目经理伸手要成果、项目经理向项目团
队要成果,至于项目团队内部是如何做出成果的,项目经理和客户是不会管的。三个成员之间是低耦合的,假设
当有需求或者其他影响学业修改某一成员内部的细节是不会影响别人的组成的。
*************************************************************************
package com.cupid.Pattern.Command; /** * @Author: cupid * Created by Cupid520 on 2018/2/22. * @Description: */ public interface BaseMethod { /** * 获取项目成果 * */ public void askProduct(); }
*****************************************************************************
package com.cupid.Pattern.Command; /** * @Author: cupid * Created by Cupid520 on 2018/2/22. * @Description: 团队成员实体类 */ public class TeamMember implements BaseMethod{ @Override public void askProduct() { System.out.println("TeamMember 团队成员提供产品"); } }
********************************************************************************
package com.cupid.Pattern.Command; /** * @Author: cupid * Created by Cupid520 on 2018/2/22. * @Description: 项目经理实体类 */ public class ProjectManager implements BaseMethod{ private TeamMember teamMember; public ProjectManager(TeamMember teamMember) { this.teamMember = teamMember; } @Override public void askProduct() { try{ //项目经理向团队索要成果 teamMember.askProduct(); }catch (RuntimeException e){e.printStackTrace();} } }
*****************************************************************************
package com.cupid.Pattern.Command; /** * @Author: cupid * Created by Cupid520 on 2018/2/22. * @Description: 模拟客户请求 */ public class ClientRequest implements BaseMethod{ private ProjectManager projectManager; public ClientRequest(ProjectManager projectManager) { this.projectManager = projectManager; } @Override public void askProduct() { //客户向项目经理索要项目成果 projectManager.askProduct(); } }
******************************************************************************
package com.cupid.Pattern.Command; /** * @Author: cupid * Created by Cupid520 on 2018/2/22. * @Description: 测试主类 */ public class MainTest { public static void main(String[] args) { TeamMember teamMember = new TeamMember(); ProjectManager projectManager = new ProjectManager(teamMember); ClientRequest clientRequest = new ClientRequest(projectManager); clientRequest.askProduct(); } }