抽象工厂模式

思路分析:

我有两个家,一个是现实的,一个是二次元的。

家里有老婆孩子。

逻辑关系图。

代码结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SWNfg7j0-1637046995220)()]

创建抽象层
先创建小的抽象

wife.java

妻子可以生孩子,洗衣服

package com.example.demo.factory.abstractFactory;

public interface wife {
    //生孩子
    void bornChildren();
    //洗衣服
    void washClothes();
}


children.java

孩子会吃和玩

package com.example.demo.factory.abstractFactory;

public interface children {
    //玩
    void play();
    //吃
    void eat();
}

后创建大的抽象

home.java

家里有妻子和孩子

package com.example.demo.factory.abstractFactory;

public interface home {
    wife wife();
    children children();
}

对抽象进行具体的实现
先实现小的抽象
妻子

trueWife.java

真正的妻子生孩子,自己洗衣服

package com.example.demo.factory.abstractFactory;

public class trueWife implements wife{
    @Override
    public void bornChildren() {
        System.out.println("mo qing ni born daughter");
    }

    @Override
    public void washClothes() {
        System.out.println("mo qing ni wash clothes");
    }
}

fakeWife.java

虚假的妻子生孩子,让孩子洗衣服

package com.example.demo.factory.abstractFactory;

public class fakeWife implements wife{
    @Override
    public void bornChildren() {
        System.out.println("伊蕾娜 born son");
    }

    @Override
    public void washClothes() {
        System.out.println("son wash clothes");
    }
}

孩子

daughterChildren.java

真孩子自己吃和玩

package com.example.demo.factory.abstractFactory;

public class daughterChildren implements children{
    @Override
    public void play() {
        System.out.println("daughter play");
    }

    @Override
    public void eat() {
        System.out.println("daughter eat");
    }
}

sonChildren.java

假孩子母亲吃和玩

package com.example.demo.factory.abstractFactory;

public class sonChildren implements children{
    @Override
    public void play() {
        System.out.println("伊蕾娜 play");
    }

    @Override
    public void eat() {
        System.out.println("伊蕾娜 eat");
    }
}

后实现大的抽象

trueHome.java

真实的家放真妻子和真孩子

package com.example.demo.factory.abstractFactory;

public class trueHome implements home{

    @Override
    public wife wife() {
        return new trueWife();
    }

    @Override
    public children children() {
        return new daughterChildren();
    }
}

fakeHome.java

虚假的家放假妻子和假孩子

package com.example.demo.factory.abstractFactory;

public class fakeHome implements home{
    @Override
    public wife wife() {
        return new fakeWife();
    }

    @Override
    public children children() {
        return new sonChildren();
    }
}
消费者进行调用

me.java

我的日常…

真妻子生孩子,孩子吃和玩,然后妻子洗衣服。

假妻子生孩子,自己吃和玩,还让孩子洗衣服。

package com.example.demo.factory.abstractFactory;

public class me {
    public static void main(String[] args) {
        trueHome trueHome = new trueHome();
        trueHome.wife().bornChildren();
        trueHome.children().eat();
        trueHome.children().play();
        trueHome.wife().washClothes();

        fakeHome fakeHome = new fakeHome();
        fakeHome.wife().bornChildren();
        fakeHome.children().eat();
        fakeHome.children().play();
        fakeHome.wife().washClothes();
    }
}
运行结果
mo qing ni born daughter
daughter eat
daughter play
mo qing ni wash clothes
伊蕾娜 born son
伊蕾娜 eat
伊蕾娜 play
son wash clothes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值