工厂模式(简单工厂)

本文介绍了简单工厂模式的概念,包括其核心组成部分:工厂角色、抽象产品角色及具体产品角色。通过一个具体的例子——农夫种植不同种类的水果,展示了如何使用简单工厂模式来创建不同的对象实例。同时,也指出了该模式的优缺点。

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

简单工厂模式就是一个工厂类根据传入的参量决定创建出哪一种产品类的实例。

简单工厂模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色:

1。工厂类角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,他往往由一个具体的JAVA类实现。

2。抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个JAVA接口或JAVA抽象实现。

3。具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例。

 

代码:产品接口类(水果)

package 工厂模式.简单工厂模式;

public interface Fruit {

 void grow();
 void harvest();
 void plant();
}

产品类:

Apple:(苹果)

package 工厂模式.简单工厂模式;

public class Apple implements Fruit {

 public void grow() {
  System.out.println("apple grow");

 }

 public void harvest() {
  System.out.println("apple harvest");

 }

 public void plant() {
  System.out.println("apple plant");

 }

}

 

Banana:(香蕉)
package 工厂模式.简单工厂模式;

public class Banana implements Fruit {

 public void grow() {
  System.out.println("Banana grow");

 }

 public void harvest() {
  System.out.println("Banana harvest");

 }

 public void plant() {
  System.out.println("Banana plant");
 }

}

 

工厂类:(农夫)

package 工厂模式.简单工厂模式;

public class FruitGardener {
 
 public static Fruit factory(String fruit)
 {
  if("apple".equals(fruit))
  {
   return new Apple();
  }
  if("banana".equals(fruit))
  {
   return new Banana();
  }
  else
  {
   return null;
  }
 }

}

客户端:

package 工厂模式.简单工厂模式;

public class Client {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Apple apple = (Apple) FruitGardener.factory("apple");
  apple.plant();

 }

}

 

 简单工厂模式的优缺点:

       这个工厂类农夫集中了所有产品的逻辑,形成了一个无所不能的全能类,这个农夫必须对所有的水果负责,如果这个农夫什么时候工作出现了异常,那么整个生产环境都要造成影响。

      将这么多逻辑集中放在一个类里面的另外一个缺点是:当产品类有不同的接口时,农夫将对新的产品进行判断,那么就必须要更改农夫这个类,对于扩展是很不方便的。所以下面介绍工厂方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值