设计模式----外观模式

外观模式

什么是外观模式

举例:我需要吃中午饭 ,我给我的管家说,让管家给我安排(管家相当于:系统对外的接口 我代表:用户),

这时候 管家就需要去找厨师做饭,采购员买食材,营养师来规划营养餐,最后到我(用户)的手上就只需要吃就可以了。

管家做的那些复杂的操作用户都不需要管

为什么要使用外观模式

降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

外观模式的运用场景

1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。

2、JAVA 的三层开发模式。

使用外观模式的好处

1、为复杂的模块或子系统提供外界访问的模块。

2、子系统相对独立。

3、预防低水平人员带来的风险。

代码

接口

public interface Operation {

    void methods();
}

bean对象

//采购员
public class Buyer implements Operation{
    public void methods() {
        System.out.println("采买东西");
    }
}
//厨师
public class Cook implements Operation {
    public void methods() {
        System.out.println("做饭");
    }
}
//装修师傅
public class DecorateTercher implements Operation{
    public void methods() {
        System.out.println("装修房间");
    }
}
//营养师
public class Dietitian implements Operation{
    public void methods() {
        System.out.println("设计营养餐");
    }
}

外观类

public class ShapeMaker {
    //厨师
    private Operation Cook;
    //采购员
    private Operation Buyer;
    //营养师
    private Operation Dietitian;
    //装修师傅
    private Operation DecorateTercher;

    //在无参构造中 创建对象
    public ShapeMaker() {
        Cook  = new Cook();
        Buyer = new Buyer();
        Dietitian = new Dietitian();
        DecorateTercher = new DecorateTercher();
    }

    //吃饭
    public void eat(){
        Cook.methods();
        Buyer.methods();
        Dietitian.methods();
    }

    //装修房间
    public void decorate(){
        Buyer.methods();
        DecorateTercher.methods();
    }

    public Operation getCook() {
        return Cook;
    }

    public void setCook(Operation cook) {
        Cook = cook;
    }

    public Operation getBuyer() {
        return Buyer;
    }

    public void setBuyer(Operation buyer) {
        Buyer = buyer;
    }

    public Operation getDietitian() {
        return Dietitian;
    }

    public void setDietitian(Operation dietitian) {
        Dietitian = dietitian;
    }

    public Operation getDecorateTercher() {
        return DecorateTercher;
    }

    public void setDecorateTercher(Operation decorateTercher) {
        DecorateTercher = decorateTercher;
    }

    @Override
    public String toString() {
        return "ShapeMaker{" +
                "Cook=" + Cook +
                ", Buyer=" + Buyer +
                ", Dietitian=" + Dietitian +
                ", Decorate=" + DecorateTercher +
                '}';
    }
}

测试方法

public class Demo {
    public static void main(String[] args) {
        // 做饭
        ShapeMaker shapeMaker = new ShapeMaker();
        shapeMaker.eat();
        System.out.println("--------------------");
        //装修房间
        shapeMaker.decorate();
    }
}

//测试结果
做饭
采买东西
设计营养餐
--------------------
采买东西
装修房间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值