一个初创的团队只有一个后台,一个网页前端,一个美工。老板要做一个分享页面,他要分别告诉后台加个链接,告诉美工抓紧设计页面,告诉前端要加酷炫的特效,整个流程下来特别麻烦。几天后公司招了产品经理,老板有需求只要找他就可以解决,工作效率大大提升。
模式定义:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
案例分析:产品经理就是项目组的门面,他为外界提供加链接、设计页面、加特效的统一接口,然后由他分配给组内员工。
优点:用户只需要直接与外观角色交互,从而降低了系统的耦合度。
注意:一个子系统最好只提供一个门面类
代码:产品经理
public class Pm {
private Html html = new Html();
private Ui ui = new Ui();
private Php php = new Php();
//分享
public void addShare(){
ui.design();//设计
html.addEffects();//加特效
php.addLink();//添加链接
}
//修复bug
public void repairBug(){
php.repairBug();
}
//加特效
public void addEffects() {
html.addEffects();
}
//设计
public void design() {
ui.design();
}
//加链接
public void addLink() {
php.addLink();
}
}
前端html
public class Html {
public void addEffects(){
System.out.println("前端加特效");
}
}
后台php
public class Php {
public void addLink() {
System.out.println("后台加链接");
}
public void repairBug() {
System.out.println("后台改bug");
}
}
设计师ui
public class Ui {
public void design(){
System.out.println("美工做图");
}
}
测试
public class Test {
public static void main(String args[]) {
Pm pm = new Pm();
System.out.println("老板要做分享页面");
pm.addShare();
System.out.println("====================");
System.out.println("测试人员提出一个bug");
pm.repairBug();
System.out.println("====================");
System.out.println("客服要一张产品效果图");
pm.design();
}
}
结果
老板要做分享页面
美工做图
前端加特效
后台加链接
====================
测试人员提出一个bug
后台改bug
====================
客服要一张产品效果图
美工做图