简单工厂模式
来源:互联网 发布:淘宝网花卉 编辑:程序博客网 时间:2024/06/14 12:43
public class OrderPizza {
public OrderPizza() {
pizza pizza=null;
String ordergetType;
do {
ordergetType=getType();
if(ordergetType.equals("butter")){
pizza=new butterPizza();
}else if(ordergetType.equals("greek")){
pizza=new greekPizza();
}else if(ordergetType.equals("chocolate")){
pizza=new chocolatePizza();
}else
break;
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
} while (true);
}
private String getType() {
try {
BufferedReader strin = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("input pizza type:");
String str = strin.readLine();
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
}
public abstract class pizza {
public abstract void prepare();
String name ;
public void bake() {
System.out.println(name+"烘焙中");
}
public void cut() {
System.out.println(name+"切割中");
}
public void box() {
System.out.println(name+"包装中");
}
public void setname(String name)
{
this.name=name;
}
}
public class chocolatePizza extends pizza {
@Override
public void prepare() {
super.setname("chocolatePizza");
System.out.println(name+"准备中");
}
}
其他蛋糕:省略
蛋糕店蛋糕销售系统:当用户输入chocolate的时候自动走生产该蛋糕流程。
暂时不考虑退货退款什么,包括除了材料可能不能将prepare方法进行抽象,其他都默认为一样,虽然可能细节不同,但基本认为是具体行为。
现在问题是说比如要新增个新口味的pizza那么就得改动Order类,并且进行重新编译,比如新增chocolate披萨,那么就得新增
else if(ordergetType.equals("chocolate")){
pizza=new chocolatePizza();
}
简单工厂模式:定义一个创建对象,由这个类来封装实例化对象的行为。
public OrderPizza() {
pizza pizza=null;
String ordergetType;
do {
ordergetType=getType();
if(ordergetType.equals("butter")){
pizza=new butterPizza();
}else if(ordergetType.equals("greek")){
pizza=new greekPizza();
}else if(ordergetType.equals("chocolate")){
pizza=new chocolatePizza();
}else
break;
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
} while (true);
}
private String getType() {
try {
BufferedReader strin = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("input pizza type:");
String str = strin.readLine();
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
}
public abstract class pizza {
public abstract void prepare();
String name ;
public void bake() {
System.out.println(name+"烘焙中");
}
public void cut() {
System.out.println(name+"切割中");
}
public void box() {
System.out.println(name+"包装中");
}
public void setname(String name)
{
this.name=name;
}
}
public class chocolatePizza extends pizza {
@Override
public void prepare() {
super.setname("chocolatePizza");
System.out.println(name+"准备中");
}
}
其他蛋糕:省略
蛋糕店蛋糕销售系统:当用户输入chocolate的时候自动走生产该蛋糕流程。
暂时不考虑退货退款什么,包括除了材料可能不能将prepare方法进行抽象,其他都默认为一样,虽然可能细节不同,但基本认为是具体行为。
现在问题是说比如要新增个新口味的pizza那么就得改动Order类,并且进行重新编译,比如新增chocolate披萨,那么就得新增
else if(ordergetType.equals("chocolate")){
pizza=new chocolatePizza();
}
,耦合性高。所以将变化的萃取出来封装为一个实例化的对象的类。其实就好像你的写个API,但是你的系统数据库或者缓存里面存了是好几个大企业的数据,那么每个企业他们要求的数据又不太一样,那么此时就得使用简单工厂模式,将不同的sql查询实例封装起来,就是简单工厂模式。
public class singleFactory {
public pizza CreatePizza(String ordergetType) {
pizza pizza=null;
if(ordergetType.equals("butter")){
pizza=new butterPizza();
}else if(ordergetType.equals("greek")){
pizza=new greekPizza();
}else if(ordergetType.equals("chocolate")){
pizza=new chocolatePizza();
}else
return null;
return pizza;
}
}
简单工厂模式:定义一个创建对象,由这个类来封装实例化对象的行为。
阅读全文
0 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 如何从头搭建一个搜索引擎_pylucene,分词,语言编码问题
- 微服务前端部分备份
- PAT乙级1007. 素数对猜想 (20)
- 监听手机浏览器的返回按钮事件
- jeecg 整合 activiti
- 简单工厂模式
- 使用maven profile实现多环境可移植构建
- 解读浮动闭合最佳方案:clearfix
- 面经(卫星)
- 【C++心路历程28】 奇葩次小生成树
- android开发,自定义左侧滑出菜单
- Android 7.0安装apk
- 支付宝支付
- WebView 的新增安全功能