思路分析:
我有两个家,一个是现实的,一个是二次元的。
家里有老婆孩子。
逻辑关系图。
代码结构图
创建抽象层
先创建小的抽象
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