工厂方法模式

工厂方法模式

定义了一个创建对象的抽象方法,由子类决定要实例化的类,

工厂方法模式将对象的实例化推迟到子类

继承抽象方法的类的构造器里创建实例对象,具体创建成什么样,直接体现在子类构造方法里
在这里插入图片描述
在这里插入图片描述

包1==================

Pizza:

package Allpizza;



public abstract class Pizza {

       private String name;

       public abstract void prepare();

       public void bake() {

             System.out.println(name+"正在baking!");

       }

       public void cut() {

             System.out.println(name+"正在cutting!");



       }

       public void box() {

             System.out.println(name+"正在boxing!");

       }



       public void setName(String name) {

             this.name=name;

       }

}


LDPeperPizza

package Allpizza;



public class LDPeperPizza extends Pizza {

       @Override

       public void prepare() {

             // TODO Auto-generated method stub

       System.out.println("伦敦胡椒披萨正在准备!!"); 

       setName("伦敦胡椒披萨");

       }

}


LDCheesePizza

package Allpizza;



public class LDCheesePizza extends Pizza{

       @Override

       public void prepare() {

             // TODO Auto-generated method stub

       System.out.println("奶酪披萨正在准备!!");     

       setName("伦敦奶酪披萨");

       }

}


BJPeperPizza

package Allpizza;



public class BJPeperPizza extends Pizza {



       @Override

       public void prepare() {

             // TODO Auto-generated method stub

             System.out.println("北京胡椒披萨正在准备!!!");

             setName("北京胡椒披萨");

       }
 
}


BJCheesePizza

package Allpizza;



public class BJCheesePizza extends Pizza {

        @Override

       public void prepare() {

System.out.println("北京奶酪披萨正在准备!!!!");

setName("北京奶酪奶酪披萨");

       }

}


包2==================
absOrder

package Orderpizza;



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;



import Allpizza.Pizza;



public abstract class absOrder {



       

abstract Pizza CreatePizza(String orderType);

public absOrder() {

       Pizza pizza=null;

       String orderType="";

       try{

       do {

             orderType=<u>getType</u>();

             pizza=CreatePizza(orderType);

             pizza.prepare();

             pizza.bake();

             pizza.cut();

             pizza.box();

       }while(true);

}catch (Exception e){

       System.err.println("没有此类披萨");

}

} 

private String getType() {

       try {

             BufferedReader strin=new BufferedReader(new 
InputStreamReader(System.in));

             System.out.println("请输入需要的披萨种类:");

             String str=strin.readLine();

             return str;

       }catch(IOException e){

             e.getStackTrace();

             return "";

       }

}

}


BJorder

package Orderpizza;



import Allpizza.BJCheesePizza;

import Allpizza.BJPeperPizza;

import <u>Allpizza.LDCheesePizza</u>;

import <u>Allpizza.LDPeperPizza</u>;

import Allpizza.Pizza;



public class BJorder extends absOrder{



       @Override

       Pizza CreatePizza(String orderType) {

              Pizza pizza=null;

              if(orderType.equals("cheese")) {

                          pizza=new  BJCheesePizza();

                     

                    } else if(orderType.equals("peper")) {

                          pizza=new BJPeperPizza();

                          

                    }

             return pizza;

       }



}

LDorder

package Orderpizza;



import Allpizza.LDCheesePizza;

import Allpizza.LDPeperPizza;

import Allpizza.Pizza;

 



public class LDorder extends absOrder {

  @Override

Pizza CreatePizza(String orderType) {

         Pizza pizza=null;

if(orderType.equals("cheese")) {

       pizza=new LDCheesePizza();

 

} else if(orderType.equals("peper")) {

       pizza=new LDPeperPizza();

       

}

return pizza;

 

}

}


Store

package Orderpizza;



public class Store {



       public static void main(String[] args) {

             // TODO Auto-generated method stub

             

//           String orderType="";

//           absOrder Order1=new LDorder();

//           Order1.CreatePizza(orderType);

             

             String loc = "bj";

             if (loc.equals("bj")) {

                    //创建北京口味的各种Pizza

                    new BJorder();

             } else {

                    //创建伦敦口味的各种Pizza

                    new LDorder();

             }

 

             

       }



}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值