设计模式——工厂模式

工厂模式

工厂模式是创建型设计模式的一种,它包括工厂方法(Factory Method)抽象工厂(Abstract Factory)

工厂方法(Factory Method)

定义一个创建对象的接口,让其子类自己决定实例化哪一个类,工厂模式使对象的创建过程延迟到子类进行。这个比较好理解,以手机工厂生产苹果和华为手机为例:
首先定义接口:

public interface Phone {
    void makePhone();
}

定义两个类:

public class Huawei implements Phone {
    public Huawei(){
        this.makePhone();
    }

    @Override
    public void makePhone() {
        System.out.println("Huawei Phone +1");
    }
}
public class IPhone implements Phone {
    public IPhone(){
        this.makePhone();
    }

    @Override
    public void makePhone() {
        System.out.println("IPhone +1");
    }
}

定义工厂:

public class PhoneFactory {
    public Phone makePhone(String phonetype){
        if (phonetype.equalsIgnoreCase("IPhone")){
            return new IPhone();
        }
        else if (phonetype.equalsIgnoreCase("Huawei")){
            return new Huawei();
        }
        return null;
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        PhoneFactory pf=new PhoneFactory();
        Phone huawei=pf.makePhone("Huawei");
        Phone iphone=pf.makePhone("IPhone");
    }
}

输出结果:

Huawei Phone +1
IPhone +1

Process finished with exit code 0

可以看到,我们在创建对象的时候只需要告诉工厂我们需要什么对象,代替了原先new具体类的操作。并且还可以在工厂中扩展对象的种类,提高代码的可扩展性。

抽象工厂(Abstract Factory)

抽象工厂提供了一个接口以创建一系列相关或相互依赖的对象,而无需指定他们的具体类。具体来讲,就是在上面的手机工厂上再抽象出一个电子厂的接口,除手机工厂实现电子厂的接口之外,还会有电脑工厂,电视工厂等工厂类去实现电子厂的接口,然后相应的工厂类下面会有不同牌子的具体实现类去完成对象的实例化。在我看来抽象工厂相当于是范围更加广的一个工厂,如果说工厂方法单指一类工厂(手机,电脑等)的话,那么抽象工厂则是一个集团,里面可以包含多个工厂方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值