抽象工厂模式

程序的UML图:

程序的代码:

public interface IFoodFactory 
 {
     public Burger MakeBurger();
     public Chicken MakeChicken();
     public Drink MakeDrink();
 } //先创建一个食品工厂接口IFoodFactory
public interface IFood
 {
     public abstract void Make();
 } //由于两家店都有汉堡、炸鸡和饮料,因此创建一个食品接口IFood,里面有做食物的方法
abstract class Burger implements IFood
{
     public void Make() {       
     }
 } //设置各个食物的接口    汉堡Burger的IFood食物接口
abstract class Chicken implements IFood
{
     public void Make() {       
     }
 } //炸鸡Chicken的IFood食物接口
abstract class Drink implements IFood
{
     public void Make() {    
     }
 } //饮料Drink的IFood食物接口
public class KFCBurger extends Burger
{
     public void Make() {
         System.out.println("This is KFC's Burger!");
     }
 }

public class McDonaldBurger extends Burger
{
     public void Make() {
         System.out.println("This is McDonal's Burger!");
     }
 }
 //继承Burger来生产肯德基和麦当劳的汉堡
public class KFCChicken extends Chicken
{
     public void Make() {
         System.out.println("This is KFC's Chicken!");
     }
}

public class McDonaldChicken extends Chicken
{
     public void Make() {
         System.out.println("This is McDonald's Chicken!");
     }
}
//继承Chicken来生产肯德基和麦当劳的炸鸡
public class KFCDrink extends Drink
{
    public void Make() {
        System.out.println("This is KFC's Drink!");
    }
}

public class McDonaldDrink extends Drink
{
     public void Make() {
         System.out.println("This is McDonald's Drink!");
     }
}
//继承Drink来生产肯德基和麦当劳的饮料
public class KFCFactory implements IFoodFactory
{ 
        public Burger MakeBurger()
        {
            return new KFCBurger();
        }

        public Chicken MakeChicken()
        {
            return new KFCChicken();
        }

        public Drink MakeDrink() 
       {
            return new KFCDrink();
       }
}
// KFC实现食品工厂的接口
public class McDonaldFactory implements IFoodFactory
{

        public McDonaldBurger MakeBurger()
        {
            return new McDonaldBurger();
        }

        public McDonaldChicken MakeChicken()
        {
            return new McDonaldChicken();
        }

         public McDonaldDrink MakeDrink() 
        {
            return new McDonaldDrink();
        }

}
// McDonald's实现食品工厂的接口

主函数Main分别创建KFC和McDonald's的实例,制作各自的汉堡、炸鸡、饮料:

 

posted @ 2015-12-30 23:39  木丶杉  阅读(142)  评论(0)    收藏  举报