这篇文章主要介绍“Java的简单工厂模式怎么用”,在日常操作中,相信很多人在Java的简单工厂模式怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的简单工厂模式怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
简单工厂模式
简单工厂模式是属于创建型模式,是工厂模式的一种。 简单工厂模式是由一个工厂对象决定创建出哪一 种产品类 的实例。简单工厂模式是工厂模式家族中最简单实用的模式
简单工厂模式:定义了一个创建对象的类,由这个类来 封装实例化对象的行为(代码)
在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.
举个例子
我家是农村的,我老爸老妈就是个农民种水果的,地里面有苹果,梨,葡萄等,你们这些城里娃,想吃新鲜水果怎么办呢?你们只能也只能去超市买了,这时候这个超市就相当于一个工厂了,客户不需要关注水果是怎么样长成的,只需要在超市买就行了
代码实现
创建一个水果接口
/** * * @ClassName: Fruits * @Description: TODO(我们都是农村的,自己种的水果,肯定很香,无公害,城里面水果不敢吃,大部分都是打农药,催熟,膨大剂,美化粉) * @author wangmeng * @date 2021年5月11日 */ public interface Fruits { public void buildFruits(); }
接口实现
苹果地
public class Apple implements Fruits { @Override public void buildFruits() { System.out.println("农村人套路少,老实,种的苹果很脆很甜,没有化学物质,卖的还便宜,付出收获不成正比"); } }
梨
public class Pear implements Fruits { @Override public void buildFruits() { System.out.println("农村人套路少,老实,自家地种的梨很脆很甜,没有化学物质,而且还特便宜"); } }
超市工厂
// 超市工厂 public class SupermarketFactory { //使用 getFruits 方法获取水果类型的对象 // 想吃苹果就给老板说,我要买带诸葛家标签牌子的苹果,无公害,就对了 // 一个调用者想创建一个对象,只要知道其名称就可以了。 public Fruits getFruits(String fruitsType){ if(fruitsType == null){ return null; } if(fruitsType.equalsIgnoreCase("Apple")){ return new Apple(); } else if(fruitsType.equalsIgnoreCase("Pear")){ return new Pear(); } return null; } }
使用超市工厂去买诸葛家标签牌子的苹果
public class Test { public static void main(String[] args) { // 使用该工厂,通过传递类型信息来获取实体类的对象 SupermarketFactory supermarketFactory= new SupermarketFactory(); Fruits fruits=supermarketFactory.getFruits("Apple"); fruits.buildFruits(); Fruits fruits1=supermarketFactory.getFruits("Pear"); fruits1.buildFruits(); } }
输出
农村人套路少,老实,种的苹果很脆很甜,没有化学物质 农村人套路少,老实,自家地种的梨很脆很甜,没有化学物质,而且还特便宜
总结
应用实例:
1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。
2、Springboot项目,持久层 换数据库只需换方言和驱动就可以。
优点:
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
到此,关于“Java的简单工厂模式怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。