简单工厂模式

简单工厂

* 一个抽象产品(接口),里面有提供的方法
* 多个 产品(类) 实现 抽象产品
* 一个工厂类 ,用于创建 各个具体的产品(类)
interface Food {
			    public void eat();
			}
			
			class Rice implements Food {
			    @Override
			    public void eat() {
			        System.out.println("吃米饭");
			    }
			}
			
			class CodeNodle implements Food {
			    @Override
			    public void eat() {
			        System.out.println("吃凉皮");
			    }
			}
			
			//设计一个简单的工厂模式
			class SimpleFac {
			    //返回各种工厂
			    public static Food getFood(int n) {
			        Food food = null;
			
			        switch (n) {
			            case 1:
			                food = new CodeNodle();
			                break;
			            case 2:
			                food = new Rice();
			                break;
			        }
			        return food;
			    }
			}

优点:

* 将 创建对象的权力交给工厂去实现

#缺点:
* 如果 具体的类特别多,那么工厂中的switch分支 就会很大
* 使用方(客户端)要记住与提供方(服务端)的映射关系
* 最重要的是:新的需求来了: 客户端(使用方要重新写新的代码)破坏了 “开闭原则”
*
#客户端 和 服务端的代码并不是同一个人写的 ,客户端并不知到服务具体类的方法是什么。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值