package com.example.gongchang_fuzadian;
public interface Food
{
public void get();
}
package com.example.gongchang_fuzadian;
public interface FoodFactory
{
//实例化汉堡
public Food getHamburg();
//实例化鸡翅
public Food getChickenWing();
}
package com.example.gongchang_fuzadian;
/* 鸡翅的抽象类 */
public abstract class ChickenWing implements Food
{
/*
* 获取鸡翅的方法
*/
public abstract void get();
}
package com.example.gongchang_fuzadian;
/* 汉堡的抽象父类 */
public abstract class Hamburg implements Food
{
/*
* 获取汉堡的方法
*/
public abstract void get();
}
package com.example.gongchang_fuzadian;
/* 麦当劳的华联分店 */
public class HualianMacDonald implements FoodFactory
{
/*
* 获取汉堡
* @see com.diermeng.designPattern.AbstractFactory.FoodFactory#getHamburg()
*/
public Food getHamburg()
{
return new HualianMacDonaldHamburg();
}
/*
* 获取鸡翅
* @see com.diermeng.designPattern.AbstractFactory.FoodFactory#getChickenWing()
*/
public Food getChickenWing()
{
return new HualianMacDonaldChickenWing();
}
}
package com.example.gongchang_fuzadian;
/* 华联那边的麦当劳分店的鸡翅 */
public class HualianMacDonaldChickenWing extends ChickenWing
{
/*
* 获取鸡翅
* @see com.diermeng.designPattern.AbstractFactory.ChickenWing#get()
*/
public void get()
{
System.out.println( "获取华联那边的麦当劳分店的鸡翅" );
}
}
package com.example.gongchang_fuzadian;
/* 华联那边的麦当劳分店的汉堡 */
public class HualianMacDonaldHamburg extends Hamburg
{
/*
* 获取汉堡
* @see com.diermeng.designPattern.AbstractFactory.Hamburg#get()
*/
public void get()
{
System.out.println( "获取华联那边的麦当劳分店的汉堡" );
}
}
package com.example.gongchang_fuzadian;
/* 中心商业街南边的麦当劳分店 */
public class SouthMacDonald implements FoodFactory
{
/*
* 获取汉堡
* @see com.diermeng.designPattern.AbstractFactory.FoodFactory#getHamburg()
*/
public Food getHamburg()
{
return new SouthMacDonaldHamburg();
}
/*
* 获取鸡翅
* @see com.diermeng.designPattern.AbstractFactory.FoodFactory#getChickenWing()
*/
public Food getChickenWing()
{
return new SouthMacDonaldChickenWing();
}
}
package com.example.gongchang_fuzadian;
/* 中心商业街南边的的麦当劳分店的汉堡 */
public class SouthMacDonaldHamburg extends Hamburg
{
/*
* 获取汉堡
* @see com.diermeng.designPattern.AbstractFactory.Hamburg#get()
*/
public void get()
{
System.out.println( "获取中心商业街南边的的麦当劳分店的汉堡" );
}
}
package com.example.gongchang_fuzadian;
/* 中心商业街南边的的麦当劳分店的鸡翅 */
public class SouthMacDonaldChickenWing extends ChickenWing
{
public void get()
{
System.out.println( "获取中心商业街南边的的麦当劳分店的鸡翅" );
}
}
package com.example.gongchang_fuzadian;
public class TestActivity
{
public static void main(
String[] args )
{
//声明并实例化中心商业街南边的的麦当劳分店
FoodFactory southMacDonald = new SouthMacDonald();
//获取中心商业街南边的的麦当劳分店的汉堡
Food southMacDonaldHamburg = southMacDonald.getHamburg();
southMacDonaldHamburg.get();
//获取中心商业街南边的的麦当劳分店的鸡翅
Food southMacDonaldChickenWing = southMacDonald.getChickenWing();
southMacDonaldChickenWing.get();
//声明并实例化华联那边的麦当劳分店
FoodFactory hualianMacDonald = new HualianMacDonald();
//获取华联那边的麦当劳分店的汉堡
Food hualianMacDonaldHamburg = hualianMacDonald.getHamburg();
hualianMacDonaldHamburg.get();
//获取华联那边的麦当劳分店的鸡翅
Food hualianMacDonaldChickenWing = hualianMacDonald.getChickenWing();
hualianMacDonaldChickenWing.get();
}
}
输出结果是:
获取中心商业街南边的的麦当劳分店的汉堡
获取中心商业街南边的的麦当劳分店的鸡翅
获取华联那边的麦当劳分店的汉堡
获取华联那边的麦当劳分店的鸡翅