Java语言设计模式之工厂方法模式实例讲解
小标 2018-12-04 来源 : 阅读 804 评论 0

摘要:本文主要向大家介绍了Java语言设计模式之工厂方法模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了Java语言设计模式之工厂方法模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


工厂方法模式(Factory Pattern)是创建型设计模式之一。当需要生成复杂对象时,就可以使用工厂方法模式,一般是定义一个用于创建对象的接口,让子类决定实例化哪个类。此模式核心是封装类中不变的部分,提取个性化经常变的部分为其子类,通过依赖注入达到解耦、复用和后期维护拓展。




其中包含四部分:抽象工厂类,具体工厂类,抽象产品类,具体产品类。


抽象工厂类:如图中的 Factory,是工厂方法模式的核心。


具体工厂类:如图中的 FactoryA、FactoryB,用来实现具体的生产逻辑。


抽象产品类:如图中的 Product,是工厂方法模式所创建的产品的父类


具体产品类:如图中的 ProductA、ProductB,实现抽象产品的某个具体产品的对象


下面我们以一个具体的例子来讲解一下简单实现工厂方法模式的步骤,比如有一家凤凰牌自行车组装商,有 A、B两款自行车,一个工厂里面有两条生产线来组装两种车:


创建抽象工具类 BuildBike.java,定义公共接口 build():


public abstract class BuildBike {

    public abstract Bike build();

}

   



创建抽象产品类 Bike.java,定义公共接口类 ride():



public abstract class Bike {

    public abstract void ride();

}

   



创建具体产品类 BikeA.java,BikeB.java,继承自抽象产品类 Bike.java:


//具体产品类 BikeA

public class BikeA extends Bike {

    @Override

    public void ride() {

        System.out.println("A 自行车可以骑");

    }

}

//具体产品类 BikeB

public class BikeB extends Bike {

    @Override

    public void ride() {

        System.out.println("B 自行车可以骑");

    }

}

   



创建具体工具类 BuildBikeA.java,BuildBikeB.java,继承自抽象工具类 BuildBike.java


//具体工具类 BuildBikeA

public class BuildBikeA extends BuildBike {

    @Override

    public Bike build() {

        return new BikeA();

    }

}

//具体工具类 BuildBikeB

public class BuildBikeB extends BuildBike {

    @Override

    public Bike build() {

        return new BikeB();

    }

}

   



接下来我们可以在 main() 方法中来组装两种自行车了:


public class Main {

    public static void main(String[] args) {

        //组装 A 自行车

        BuildBikeA buildBikeA = new BuildBikeA();

        buildBikeA.build().ride();

        //组装B 自行车

        BuildBikeB buildBikeB = new BuildBikeB();

        buildBikeB.build().ride();

 

    }

}

   



结果:




那么工厂方法模式有什么优点呢?当你需要新增一些产品时,你只需要增加具体的产品类和相应的工厂子类,当公共接口很多,又有不同私有方法时,你完全不必新增一个产品就去再写一次所有的公共接口。降低代码的耦合性,方便以后维护和拓展。


工厂方法模式试用场景:


第一种是使用者知道对于某个产品应该使用哪个具体工具类,实例化工具类,生产产品。


第二种是使用者只需要某个产品,不知道也不管哪个具体工具类,交给生产方决策(决策过程对于使用者是透明的),根据情况实例化一个具体的工具类交给使用者。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程