java设计模式之***模式

***模式:为其他对象提供一个***对象,并由***对象控制对原对象的访问。
直接上经典代码

//***模式

//定义一种类型的女人,这类女人都有这种特性,所以用接口
interface KindWomen{
    public abstract void makeEyesWithMan();
    public abstract void happyWithMan();
}

//潘金莲
class PanJinLian implements KindWomen{
    public void makeEyesWithMan(){
        System.out.println("潘金莲抛媚眼。。。");
    }
    public void happyWithMan(){
        System.out.println("潘金莲和男人。。。");
    }
}

//丑陋的王婆
class WangPo implements KindWomen{
    private KindWomen kindWomen;
    public WangPo(){
        //默认是潘金莲的***
        this.kindWomen = new PanJinLian();
    }
    public WangPo(KindWomen kindWomen){
        //也可以是这类女人中的任何一个的***
        this.kindWomen = kindWomen;
    }
    public void makeEyesWithMan(){
        //年纪大了,没人看她抛媚眼
        this.kindWomen.makeEyesWithMan();
    }
    public void happyWithMan(){
        //自己老了,没精力了,但可以让年轻的代替
        this.kindWomen.happyWithMan();
    }
}

//贾氏
class JiaShi implements KindWomen{
    public void makeEyesWithMan(){
        System.out.println("贾氏抛媚眼。。。");
    }
    public void happyWithMan(){
        System.out.println("贾氏和男人。。。");
    }
}

//西门大官人出场
class XiMenQing{
    public static void main(String[] args){
        //把王婆叫出来
        WangPo wp = new WangPo();
        //表面是王婆在做,其实是潘金莲
        wp.makeEyesWithMan();
        wp.happyWithMan();

        //西门庆又去勾引贾氏
        wp= new WangPo(new JiaShi());
        wp.makeEyesWithMan();
        wp.happyWithMan();
    }
}

运行结果:
潘金莲抛媚眼。。。
潘金莲和男人。。。
贾氏抛媚眼。。。
贾氏和男人。。。

转自:http://yangguangfu.iteye.com/blog/815787

全部评论

相关推荐

程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务