大话设计模式-***模式的应用举例

该例子是大话设计模式课本上的举例,男孩通过一个***去追求心目中的女神,对于理解***模式很有帮助。 

/**
 * 被追求者 女神
 */
public class Girl {
    //名字
    private String name;

    public Girl() {
    }

    public Girl(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

/**
 * 送礼物接口
 * ***和追求者都要实现该接口
 */
public interface IGiveGift {
    /**
     * 送的三种礼物
     */
    void giveDolls();
    void giveFlowers();
    void giveChocolate();
}
/**
 * 真实的追求者
 */
public class Pursuit implements IGiveGift {
    //被追的女孩
    private Girl girl;

    public Pursuit() {
    }

    public Pursuit(Girl girl) {
        this.girl = girl;
    }

    @Override
    public void giveDolls() {
        System.out.println(girl.getName() + " 送你洋娃娃");
    }

    @Override
    public void giveFlowers() {
        System.out.println(girl.getName() + " 送你鲜花");
    }

    @Override
    public void giveChocolate() {
        System.out.println(girl.getName() + " 送你巧克力");
    }
}
/**
 * 追求者请的*** 代替自己追求女神
 */
public class Proxy implements IGiveGift {
    //真实追求者
    private Pursuit pursuit;

    /**
     * 从构造方法开始 全都是直接调用的真实追求者的方法
     * ***只是一个*** 没有自己的操作 只是帮别人完成任务
     *
     * @param girl
     */
    public Proxy(Girl girl) {
        pursuit = new Pursuit(girl);
    }

    @Override
    public void giveDolls() {
        pursuit.giveDolls();
    }

    @Override
    public void giveFlowers() {
        pursuit.giveFlowers();
    }

    @Override
    public void giveChocolate() {
        pursuit.giveChocolate();
    }
}
public class Main {
    public static void main(String[] args) {
        //被追求者
        Girl girl = new Girl("女神");
        //***
        Proxy proxy = new Proxy(girl);
        //***帮真实追求者 追求女孩
        proxy.giveDolls();
        proxy.giveFlowers();
        proxy.giveChocolate();
    }
}

运行结果:

女神 送你洋娃娃
女神 送你鲜花
女神 送你巧克力

 

全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务