设计模式系列1--工厂模式

本文深入探讨工厂方法模式的概念,通过麦当劳点餐的例子直观展示其工作原理,并阐述了该模式的优点以及如何实现灵活扩展产品的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工厂模式,一般需要一个 工厂类, 一个产品虚拟类(接口也行) ,然后最少需要1个产品类, 最后写一个测试类


网上的例子蛮好, 去麦当劳吃饭,  我们只需要向 麦当劳服务员(工厂) 说我们需要点啥 即可:


1   吃的  超级类 或者接口


public interface Food {
 
 
 public void diancan();
 

}


2.1 具体的 食品  汉堡


public class HanBao implements Food {
 
 public HanBao ()
 {
  System.out.println("1个汉堡来了");
  
 }

 @Override
 public void diancan() {
  System.out.println("汉堡真好吃");

 }
 
 

}


2.2 具体的食品 可乐



public class KeLe implements Food {

 
 public KeLe()
 {
 
  System.out.println("一杯可乐来了");
 }
 @Override
 public void diancan() {
  
  System.out.println("可乐还是不错的 ");

 }

}


3  工厂  (麦当劳服务员)


public class McFactory {
 
 //麦当劳 餐厅 提供的产品 (吃的)
 public static  Food getFood(String name)
 {
  
  System.out.println("---服务员开始点餐---");
  
  
    if (name.equals("kele"))
    {
     return  new KeLe();
    }
   
    if (name.equals("hanbao"))
    {
     return  new HanBao();
    }
   
    else  return null;
 }

}


4 测试类


public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  Food fd1=McFactory.getFood("hanbao");
  fd1.diancan();
  
  //吃饱了  再来一杯
  
  Food fd2=McFactory.getFood("kele");
  fd2.diancan();
  
  

 }

}



5 结果:


---服务员开始点餐---
1个汉堡来了
汉堡真好吃
---服务员开始点餐---
一杯可乐来了
可乐还是不错的




工厂方法的优点 不是很熟悉, 但是缺点很明显:


所有的产品都在 factory里, 如果 以后 麦当劳增加了一个 烤鸡翅 怎么办, 只能再增加一个食品类,再修改factory类 ,增加一个食品类到是无所谓,但如果要修改系统已经存在的factory类, 则是尽量避免。


所以 马上就有了 工厂方法 模式


工厂方法 符合 java 的 开闭 原则,  可以无限制的扩展 产品(麦当劳的食品) 不需要修改 factory类,

只需要依葫芦画瓢 增加一个 生产 烤鸡翅的 产品类  一个 生产烤鸡翅的工程类,  自由扩展







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值