设计模式之----简单工厂模式

简单工厂模式

提供创建对象的功能,不需要关心具体的实现,降低调用端和模块的耦合度(最少知识原则)。

接口实现多态的场景的例子

1. 普通实现(将子类的实现指向父接口)

Api api = new ApiImplA();

1.1 存在的问题

如果这个类是设计给别人使用,假如存在多个实现类,那么,我需要告知使用者,各个实现类分别是什么功能等等,他才能够使用。

1.2 改进

使用简单工厂模式,使用常量去区分,我需要获取的对象。

2. 简单工厂模式实现

public class ApiImplA implements Api{}
public class ApiImplB implements Api{}
public class ApiImplC implements Api{}

public class Factory {

//创建方法
public static Api create(int type) {
    switch (type) {
        case 1:
            return new ApiImplB();
        case 2:
            return new ApiImplC();
        default:
            return new ApiImplA();
        }
    }
}

使用(可以将几种类型提为常量):

    // 简单工厂模式:符合最少知识原则
    Api api = Factory.create(1);

    api = Factory.create(2);

2.1 进一步优化:将各实现类和工厂类放到同一个包内,实现类的修饰符去掉,只对包内公开。

//这种实现方式已经不可用,只能使用简单工厂创建。
Api api = new ApiImplA();

3. 总结:

在安卓中比如BitmapFactory就是这样的典型例子。

在看很多开源库的时候,我们会发现很多实现细节的类是没有修饰符的,调用端无法直接创建实现对象,只能使用工厂的创建方法创建,符合最少知识原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值