【源码分析设计模式 3】JDK中的工厂模式,java多线程实战项目


1、优点

(1)良好的封装性、代码结构清晰。

如一个调用者想创建一个对象,只需要知道其名称即可,降低了模板间的耦合。

(2)扩展性好。

如果想增加一个产品,只需扩展一个工厂类即可。

(3)屏蔽产品类

调用者只关心产品的接口。

(4)典型的解耦框架

2、缺点

每增加一个产品,就需要增加一个产品工厂的类,增加了系统的复杂度。

三、工厂方法模式的应用


1、何时使用

不同条件下创建不用实例时。方法是让子类实现工厂接口。

2、使用场景

(1)需要生成对象的地方。

(2)需要灵活的、可扩展的框架。

(3)数据库访问、数据库可能变化时。

3、应用实例

(1) 需要一辆汽车,直接从工厂里面提货,不用去管这辆车是怎么做出来的。

(2)hibernate换数据库只需换方言和驱动即可。

(3)简单计算器的实现。

四、《Head First 设计模式》读后感


1、定义了一个创建对象的接口,但由子类决定实例化的类是哪一个,工厂方法将类的实例化推迟到子类。

2、利用工厂方法创建对象,需要扩展一个类,并覆盖它的工厂方法。整个工厂方法模式就是通过子类来创建对象,只负责将客户从具体类型中解耦。

五、代码实例


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTE1NzY4

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

My8yMDE4MDYvMTE1NzY4My0yMDE4MDYyNDE0NDc1NDY3NC0xNjcwMjUyNzk0LnBuZw?x-oss-process=image/format,png)

1、Factory类

package designMode.factory;

public abstract class Factory {

public abstract Product createProduct(String owner);

public abstract void registerProduct(Product p);

public abstract void getAllProductOwner();

public Product create(String owner){

Product p = createProduct(owner);

registerProduct§;

return p;

}

}

2、IDCardFactory类

package designMode.factory;

import java.util.ArrayList;

import java.util.List;

public class IDCardFactory extends Factory {

List owners = new ArrayList();

public Product createProduct(String owner){

System.out.println(“为 “+owner+” 创造产品成功…”);

return new IDCardProduct(owner);

}

@Override

public void registerProduct(Product p) {

String owner=((IDCardProduct)p).getOwner();

owners.add(owner);

System.out.println(“注册 “+owner+” 的产品成功…”);

}

@Override

public void getAllProductOwner() {

for(int i=0;i<owners.size();i++){

System.out.println(“产品用户:”+owners.get(i));

}

}

}

3、抽象类

package designMode.factory;

public abstract class Product {

public abstract void use();

}

4、 具体实现类

package designMode.factory;

public class IDCardProduct extends Product {

String owner;

public IDCardProduct(String owner) {

this.owner = owner;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值