门面模式【设置模式】

参考:设计模式之禅

门面模式模式

好,我们继续讲课。大家都是高智商的人,都写过纸质的信件吧,比如给女朋友写情书什么的,写信
的过程大家都还记得吧,先写信的内容,然后写信封,然后把信放到信封中,封好,投递到信箱中进行邮
递,这个过程还是比较简单的,虽然简单,这四个步骤都是要跑的呀,信多了还是麻烦,比如到了情人节,
为了大海捞针,给十个女孩子发情书,都要这样跑一遍,你不要累死,更别说你要发个广告信啥的,一下
子发 1 千万封邮件,那不就完蛋了?那怎么办呢?还好,现在邮局开发了一个新业务,你只要把信件的必
要信息高速我,我给你发,我来做这四个过程,你就不要管了,只要把信件交给我就成了。

类图

在这里插入图片描述
在这里插入图片描述

实现

1. 定义一个写信的过程

package DesignModel_7;

public interface LetterProcess {
    //首先要写信的内容
    public void writeContext(String context);

    //其次写信封
    public void fillEnvelope(String address);

    //把信放到信封里
    public void letterInotoEnvelope();

    //然后邮递
    public void sendLetter();
}

2. 写信的具体实现

package DesignModel_7;

public class LetterProcessImpl implements LetterProcess {
    @Override
    public void writeContext(String context) {
        System.out.println("填写信的内容...." + context);
    }

    @Override
    public void fillEnvelope(String address) {
        System.out.println("填写收件人地址及姓名...." + address);
    }

    @Override
    public void letterInotoEnvelope() {
        System.out.println("把信放到信封中....");
    }

    @Override
    public void sendLetter() {
        System.out.println("邮递信件...");
    }
}

3. 定义现代化的邮局

package DesignModel_7;

public class ModenPostOffice {
    private LetterProcess letterProcess = new LetterProcessImpl();
//    private Police letterPolice = new Police();

    //写信,封装,投递,一体化了
    public void sendLetter(String context,String address){

        //帮你写信
        letterProcess.writeContext(context);

        //写好信封
        letterProcess.fillEnvelope(address);

        //警察要检查信件了
//        letterPolice.checkLetter(letterProcess);

        //把信放到信封中
        letterProcess.letterInotoEnvelope();

        //邮递信件
        letterProcess.sendLetter();

    }
}

4. 定义–

package DesignModel_7;

public class Client {
    public static void main(String[] args) {
        //创建一个处理信件的过程
        LetterProcess letterProcess = new LetterProcessImpl();

        //开始写信
        letterProcess.writeContext("Hello,It's me,do you know who I am? I'm your old lover. I'd like to....");

        //开始写信封
        letterProcess.fillEnvelope("Happy Road No. 666,God Province,Heaven");

        //把信放到信封里,并封装好
        letterProcess.letterInotoEnvelope();

        //跑到邮局把信塞到邮箱,投递
        letterProcess.sendLetter();


        //现代化的邮局,有这项服务,邮局名称叫Hell Road
        ModenPostOffice hellRoadPostOffice = new ModenPostOffice();

        //你只要把信的内容和收信人地址给他,他会帮你完成一系列的工作;
        String address = "Happy Road No. 666,God Province,Heaven"; //定义一个地址
        String context = "Hello,It's me,do you know who I am? I'm your old lover. I'd like to....";
        hellRoadPostOffice.sendLetter(context, address);
    }
}

运行结果

填写信的内容....Hello,It's me,do you know who I am? I'm your old lover. I'd like to....
填写收件人地址及姓名....Happy Road No. 666,God Province,Heaven
把信放到信封中....
邮递信件...
填写信的内容....Hello,It's me,do you know who I am? I'm your old lover. I'd like to....
填写收件人地址及姓名....Happy Road No. 666,God Province,Heaven
把信放到信封中....
邮递信件...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值