请MM吃饭之简单工厂实现

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dba10g.blog.51cto.com/764602/228768

最近,我突然之间喜欢上了某个MM,通过红军过草地的毅力,和顽强的意志,我终于得到了很MM共进晚餐的机会。我们约定在麦当劳见面。下面使我们见面的过程。

晚餐很简单,我们只吃了点鸡翅,和可乐。原因麦当劳太差劲了,他们只提供鸡翅和可乐,结果MM 饿着肚子陪我说了会话,就走了,结果只有一个,我被甩了。

 

下面是实现源码:

package simplefactory; 
/* 
* 食物接口 
*/ 
public interface Food { 

  public void desc(); 

 

具体产品角色:

工厂创建的对象都是这个角色的实例

 

package simplefactory; 

public class Cocacola implements Food{ 

  public void desc() { 
     
    System.out.println("可口可乐,酸酸甜甜就是我"); 
     
  } 

 

package simplefactory; 
/* 
* 鸡翅类 
*/ 
public class ChickenWing implements Food { 
  public void desc(){ 
    System.out.println("鸡翅香酥可口,跟老太太的裤腰似的"); 
  } 

 

3.工厂类

创建具体产品

package simplefactory; 

public class Mcdonald { 

  public static Food factory(String type) throws BadFoodException{ 
    Food    food = null; 
    if(type.equalsIgnoreCase("chickenwing")){ 
      food = new ChickenWing(); 
    }else if(type.equalsIgnoreCase("cocacola")){ 
      food = new Cocacola(); 
    }else{ 
      throw new BadFoodException("本店没有该食品,请核实");    
    } 
    return food; 
  } 

 

4.辅助类

package simplefactory; 

public class BadFoodException extends Exception { 

  public BadFoodException(String msg){ 
    super(msg); 
  } 

 

优点:

客户免除直接创建产品对象了。我直接说“来份鸡翅”就可以了

缺点:

工厂负责这个创建逻辑。比如,我有什么请求,都得向他请示,询问有他们有什么东西,没有什么东西。

工厂类可能需要判断什么时候创建某种产品。

 

开闭原则:不符合,如果新添加了个食物,还要修改工厂,比如麦当劳的若干设施,代价太高了。

 

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/228768

时间: 2024-11-10 01:35:20

请MM吃饭之简单工厂实现的相关文章

请MM吃饭之抽象工厂模式实现

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/228956 MM 答应和我交往了,这对我是莫大的鼓励啊,ME决定再接再厉,一鼓作气,以迅雷不及掩耳盗铃之势夺取她的芳心.请客吃饭,不管饭店多高档繁华,都不及自己亲手做的表真心.于是,我决定亲自下厨,做饺子.更主要的是,我的财政危机提前到了. 首先,分析下需求: 饺子,首先要有很多准备工作.皮,饺子馅等原料等. MM要求:

请MM吃饭之工厂模式实现

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/228809 有了上次的失败经验,我发誓以后再也不去麦当劳了.原因有很多: 1.食物太单调了,添加个食物,就那么费劲,吃不饱. 2.服务员态度太傲慢了.(工厂责任太重了,万一它不高兴了,就意味着所有的请求失败了) 我又约了那位MM,向她做了很沉重的检讨,最后她终于给了我一个解释的机会.我一定要把握这个机会,所以我求爷爷告奶

5.简单工厂模式

1简单工厂模式的核心内容是: A:方法独立 B:没有工厂,而是通过switch的方式判断使用哪个方法. C:理解:带同一个妹子到同一个地点,妹子可以选择不同的菜. 2简单工厂模式的作用:用一个简单的switch和一个方法控制使用哪个方法. 3简单工厂模式具体描述 工厂模式:客户类和工厂类分开. 消费者任何时候需要某种产品,只需向工厂请求即可. 消费者无须修改就可以接纳新产品.缺点是当产品修改时, 工厂类也要做相应的修改.如:如何创建及如何向客户端提供.   追MM少不了请吃饭了,麦当劳的鸡翅和肯

设计模式学习:简单工厂

简介: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 类图: 从UML类图中,可以看出,简单工厂模式的意思,就是把一个类内部,需要生成的部分,提取出来,变为一个工厂,通过工厂来new对象. 假设我们要吃苹果了,我们可以在代码中new一个苹果出来:当我们需要吃香蕉了,我们在代码中new一个香蕉出来.这种做法你会不会觉得麻烦,ne

设计模式系列之一:简单工厂模式

前言 设计模式能够帮助我们设计出健壮,低耦合性的代码,从此和高耦合的代码say goodbye!在所有的的设计模式中,简单工厂算是我们平时接触比较多的吧,多线程中的消费者工厂类与生产者工厂类应该算是接触最早的设计模式,简单工厂模式要解决的首要问题就是降低程序之间的耦合度,通过Java中的封装.继承与多态实现解耦.通过使用简单工厂模式,我们设计的代码更易于维护和复用 问题背景 在进入正题之前我们先看一下问题背景: 某公司开发了一个A软件,数据库使用的是SQLServer.后由于客户要求需要使用Or

设计模式: 简单工厂模式

引入: 在我们的思维中,会有一种习惯,当遇到某种问题时,会直接考虑用最直接的语言去去实现它,而往往忽略了整个程序的可维护性.可扩展性. 比如,我们写一个基本的计算器功能,要求能计算四则运算,大家或许会直接写: public class ProgramDemo{ public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(

简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

[本文转自简单工厂.工厂方法.抽象工厂.策略模式.策略与工厂的区别] 结合简单示例和UML图,讲解工厂模式简单原理. 一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上 Audi后他说"开奥迪车!".你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们

实例讲解PHP设计模式编程中的简单工厂模式_php实例

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例. 1.工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory Method Pattern). (2)工厂方法(Factory Meth

设计模式(1)-使用简单工厂优化代码

首先看一段程序,目的是完成一个计算器的计算, 面向过程的写法 #include "stdafx.h" #include <string> #include <iostream> using namespace std; int main(int argc, char* argv[]) { int strNumA,strNumB; int strOperator; cout<<"请输入数字A:\n"; cin>>strN