温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java工厂模式实例分析

发布时间:2022-02-28 09:15:38 来源:亿速云 阅读:162 作者:iii 栏目:开发技术

今天小编给大家分享一下Java工厂模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    优点

    1.一个调用者想创建一个对象,只要知道其名称就可以了。

    2.扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。

    3.屏蔽产品的具体实现,调用者只关心产品的接口。

    缺点

    1.每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

    使用场景

    1.日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。

    2.数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。

    3.设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,共同实现一个接口。

    一、实现方式

    例如:我们需要在电商平台购买一台手机,我们并不需要去关心手机生产厂商是如何把手机生产出来的,我们只需要在搜索框输入:华为手机,小米手机,就能购买到我们想要的手机了。下面看看具体实现吧。

    1、定义一个接口

    package com.asurplus.common.factory;
    public interface Phone {
        /**
         * 获取手机
         *
         * @return
         */
        String getPhone();
    }

    2、定义两个接口实现类

    package com.asurplus.common.factory;
    /**
     * 华为手机实现类
     */
    public class HuaweiPhone implements Phone {
        @Override
        public String getPhone() {
            return "华为手机";
        }
    }
    package com.asurplus.common.factory;
    /**
     * 小米手机实现类
     */
    public class XiaomiPhone implements Phone {
        @Override
        public String getPhone() {
            return "小米手机";
        }
    }

    3、定义一个工厂类

    package com.asurplus.common.factory;
    /**
     * 手机工厂类
     */
    public class PhoneFactory {
        /**
         * 获取手机
         *
         * @param name
         * @return
         */
        public static Phone getPhone(String name) {
            if ("华为".equals(name)) {
                return new HuaweiPhone();
            }
            if ("小米".equals(name)) {
                return new XiaomiPhone();
            }
            return null;
        }
    }

    二、测试

    package com.asurplus.common.factory;
    /**
     * 工厂模式
     */
    public class TestMain {
        public static void main(String[] args) {
            // 获取手机
            Phone huaweiPhone = PhoneFactory.getPhone("华为");
            System.out.println(huaweiPhone.getPhone());
        }
    }

    输出结果

    Java工厂模式实例分析

    我们输入的:华为,得到了华为手机,从而实现了我们的工厂模式。

    以上就是“Java工厂模式实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI