Java中常用的设计模式之工厂模式详解

网友投稿 233 2022-08-25


Java中常用的设计模式之工厂模式详解

目录优点缺点使用场景一、实现方式1、定义一个接口2、定义两个接口实现类3、定义一个工厂类二、测试总结

优点

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.commhttp://on.factory;

/**

* 工厂模式

*/

public class TestMain {

public static void main(String[] args) {

// 获取手机

Phone huaweiPhone = PhoneFactory.getPhone("华为");

System.out.println(huaweiPhone.getPhone());

}

}

输出结果

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

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基础总结:3.2、标准库-高级模块(python标准库最常用的模块)
下一篇:python基础总结:4.2、接下来?(python入门总结)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~