设计模式之《抽象工厂方法模式》

来源:互联网 发布:股票乖离率软件 编辑:程序博客网 时间:2024/06/18 12:25
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 {@Overridepublic void getColor() {System.out.println("黑色人种皮肤比较黑...");}@Overridepublic void talk() {System.out.println("黑色人种说话一般人听不懂..");}}
package com.design02.design;/** * 人种抽象类 每个抽象类都有两个实现类,分别实现公共的最细节,最具体的事物 * 黄种人 * @author Administrator * */public abstract class AbstractYellowHuman implements IHuman {@Overridepublic void getColor() {System.out.println("黄种人皮肤呈现黄白色");}@Overridepublic void talk() {System.out.println("黄种人说普通话");}}
package com.design02.design;/** * 人种抽象类 每个抽象类都有两个实现类,分别实现公共的最细节,最具体的事物 * 白种人 * @author Administrator * */public abstract class AbstractWhiteHuman implements IHuman {@Overridepublic void getColor() {System.out.println("白色人种皮肤是白色的..");}@Overridepublic void talk() {System.out.println("白色人种说话一般是单字节");}}
package com.design02.design.impl;import com.design02.design.AbstractBlackHuman;/** *  * 黑人女性 * @author Administrator * */public class FemaleBlackHumanImpl extends AbstractBlackHuman {@Overridepublic void getSex() {System.out.println("黑人女性");}}
package com.design02.design.impl;import com.design02.design.AbstractWhiteHuman;/** * 白人女性 * @author Administrator * */public class FemaleWhiteHumanImpl extends AbstractWhiteHuman {@Overridepublic void getSex() {System.out.println("白人女性");}}
package com.design02.design.impl;import com.design02.design.AbstractYellowHuman;/** * 黄人女性 * @author Administrator * */public class FemaleYellowHumanImpl extends AbstractYellowHuman {//黄色人种女性@Overridepublic void getSex() {System.out.println("黄人女性");}}
package com.design02.design.impl;import com.design02.design.AbstractBlackHuman;/** * 黑人男性 * @author Administrator * */public class MaleBlackHumanImpl extends AbstractBlackHuman {@Overridepublic void getSex() {System.out.println("黑人男性");}}
package com.design02.design.impl;import com.design02.design.AbstractWhiteHuman;/** * 白人男性 * @author Administrator * */public class MaleWhiteHumanImpl extends AbstractWhiteHuman {@Overridepublic void getSex() {System.out.println("白人男性");}}
package com.design02.design.impl;import com.design02.design.AbstractYellowHuman;/** * 黄人男性 * @author Administrator * */public class MaleYellowHumanImpl extends AbstractYellowHuman {@Overridepublic 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 {@Overridepublic IHuman createYellowHuman() {return new FemaleYellowHumanImpl();}@Overridepublic IHuman createBlackHuman() {return new FemaleBlackHumanImpl();}@Overridepublic 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 {@Overridepublic IHuman createYellowHuman() {return new MaleYellowHumanImpl();}@Overridepublic IHuman createBlackHuman() {return new MaleBlackHumanImpl();}@Overridepublic 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();}}
黄人男性黄种人皮肤呈现黄白色黄种人说普通话黄人女性黄种人皮肤呈现黄白色黄种人说普通话












阅读全文
0 0
原创粉丝点击