package com.design02.design;
/**
* 人种接口
* @author Administrator
*
*/
public interface IHuman {
//人种的皮肤颜色
void getColor();
//人种的语言
void talk();
//人都有性别
void getSex();
}
package com.design02.design;
/**
* 人种抽象类 每个抽象类都有两个实现类,分别实现公共的最细节,最具体的事物
* 黑种人
* @author Administrator
*
*/
public abstract class AbstractBlackHuman implements IHuman {
@Override
public void getColor() {
System.out.println("黑色人种皮肤比较黑...");
}
@Override
public void talk() {
System.out.println("黑色人种说话一般人听不懂..");
}
}
package com.design02.design;
/**
* 人种抽象类 每个抽象类都有两个实现类,分别实现公共的最细节,最具体的事物
* 黄种人
* @author Administrator
*
*/
public abstract class AbstractYellowHuman implements IHuman {
@Override
public void getColor() {
System.out.println("黄种人皮肤呈现黄白色");
}
@Override
public void talk() {
System.out.println("黄种人说普通话");
}
}
package com.design02.design;
/**
* 人种抽象类 每个抽象类都有两个实现类,分别实现公共的最细节,最具体的事物
* 白种人
* @author Administrator
*
*/
public abstract class AbstractWhiteHuman implements IHuman {
@Override
public void getColor() {
System.out.println("白色人种皮肤是白色的..");
}
@Override
public void talk() {
System.out.println("白色人种说话一般是单字节");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractBlackHuman;
/**
*
* 黑人女性
* @author Administrator
*
*/
public class FemaleBlackHumanImpl extends AbstractBlackHuman {
@Override
public void getSex() {
System.out.println("黑人女性");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractWhiteHuman;
/**
* 白人女性
* @author Administrator
*
*/
public class FemaleWhiteHumanImpl extends AbstractWhiteHuman {
@Override
public void getSex() {
System.out.println("白人女性");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractYellowHuman;
/**
* 黄人女性
* @author Administrator
*
*/
public class FemaleYellowHumanImpl extends AbstractYellowHuman {
//黄色人种女性
@Override
public void getSex() {
System.out.println("黄人女性");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractBlackHuman;
/**
* 黑人男性
* @author Administrator
*
*/
public class MaleBlackHumanImpl extends AbstractBlackHuman {
@Override
public void getSex() {
System.out.println("黑人男性");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractWhiteHuman;
/**
* 白人男性
* @author Administrator
*
*/
public class MaleWhiteHumanImpl extends AbstractWhiteHuman {
@Override
public void getSex() {
System.out.println("白人男性");
}
}
package com.design02.design.impl;
import com.design02.design.AbstractYellowHuman;
/**
* 黄人男性
* @author Administrator
*
*/
public class MaleYellowHumanImpl extends AbstractYellowHuman {
@Override
public void getSex() {
System.out.println("黄人男性");
}
}
package com.design02.design;
/**
* 人类生产工厂
* @author Administrator
*
*/
public interface IHumanFactory {
//制造一个黄种人
IHuman createYellowHuman();
//制造一个黑种人
IHuman createBlackHuman();
//制造一个白种人
IHuman createWhiteHuman();
}
package com.design02.design.impl;
import com.design02.design.IHumanFactory;
import com.design02.design.IHuman;
/**
* 女人生产工厂
* @author Administrator
*
*/
public class FemaleFactoryImpl implements IHumanFactory {
@Override
public IHuman createYellowHuman() {
return new FemaleYellowHumanImpl();
}
@Override
public IHuman createBlackHuman() {
return new FemaleBlackHumanImpl();
}
@Override
public IHuman createWhiteHuman() {
return new FemaleWhiteHumanImpl();
}
}
package com.design02.design.impl;
import com.design02.design.IHuman;
import com.design02.design.IHumanFactory;
/**
* 男人生产工厂
* @author Administrator
*
*/
public class MaleFactoryImpl implements IHumanFactory {
@Override
public IHuman createYellowHuman() {
return new MaleYellowHumanImpl();
}
@Override
public IHuman createBlackHuman() {
return new MaleBlackHumanImpl();
}
@Override
public IHuman createWhiteHuman() {
return new MaleWhiteHumanImpl();
}
}
package com.design02.design;
import com.design02.design.impl.FemaleFactoryImpl;
import com.design02.design.impl.MaleFactoryImpl;
public class NvWaTest {
public static void main(String[] args) {
//第一条生产线 男性生产线
IHumanFactory maleHumanFactory = new MaleFactoryImpl();
//第二条生产线 女性生产线
IHumanFactory femaleHumanFactory = new FemaleFactoryImpl();
//开始生产任务
//男人
IHuman human = maleHumanFactory.createYellowHuman();
human.getSex();
human.getColor();
human.talk();
//女人
IHuman human2 = femaleHumanFactory.createYellowHuman();
human2.getSex();
human2.getColor();
human2.talk();
}
}
黄人男性
黄种人皮肤呈现黄白色
黄种人说普通话
黄人女性
黄种人皮肤呈现黄白色
黄种人说普通话