标签:Java eat Food class 工厂 food void 设计模式 public
简单工厂的优点:
- 把具体产品的类型从客户端代码中解耦处理。
- 服务器端,如果修改了具体产品的类名,客户端也不知道(将Rise的类名改为Rise2 客户端的代码不需要修改)符合"面向接口编程"的思想。
简单工厂的缺点:
- 如果具体产品特别多,则简单工厂就会变得十分臃肿。比如有100个具体产品,则需要写100个case。
- 最重要的是不符合ocp原则(开闭原则),客户端需要拓展具体产品时,要修改简单工厂的代码。
package com.fjh.factory.simplefactory;
interface Food{
void eat();
}
class Hamburger implements Food{
@Override
public void eat() {
System.out.println("制造汉堡");
}
}
class Rise implements Food{
@Override
public void eat() {
System.out.println("制造饭");
}
}
class FoodFactory{
public static Food productFood(int i){
Food food = null;
switch (i){
case 1:
food = new Hamburger();
break;
case 2:
food = new Rise();
break;
default:
break;
}
return food;
}
}
public class SimpleFactoryTest {
public static void main(String[] args){
Food food = FoodFactory.productFood(2);//可以将产品与对应编号写成枚举类。
food.eat();
}
}
标签:Java,eat,Food,class,工厂,food,void,设计模式,public 来源: https://www.cnblogs.com/isfjh/p/15132959.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。