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();
}
}
黃人男性
黃種人皮膚呈現黃白色
黃種人說普通話
黃人女性
黃種人皮膚呈現黃白色
黃種人說普通話