设计模式之工厂模式

设计模式之工厂模式

简单工厂模式

返回对象的类可以根据输入参数的不同而不同
简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。

public class SimpleFactory {

    public static Phone createPhone(String phoneName) {
        if ("A".equals(phoneName)) return new PhoneA();
        if ("B".equals(phoneName)) return new PhoneB();
        return null;
    }
}

class Phone {}
class PhoneA extends Phone {}
class PhoneB extends Phone {}

工厂模式

工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。

public interface PhoneFactory {
    Phone createPhone();
}

public class HuaweiFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new P40();
    }
}

public class IphoneFactory implements PhoneFactory {
    @Override
    public Phone createPhone() {
        return new Iphone4();
    }
}

public interface Phone {}
public class P40 implements Phone{}
public class Iphone4 implements Phone{}

抽象工厂模式

抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量

public interface AbstractFactory {
    PhoneShell createPhoneShell();
    Phone createPhone();
}

class Brand1Factory implements AbstractFactory {
    @Override
    public PhoneShell createPhoneShell() {
        return new PlasticShell();
    }

    @Override
    public Phone createPhone() {
        return new Iphone();
    }
}

class Brand2Factory implements AbstractFactory {
	...
}

interface PhoneShell {}
class PlasticShell implements PhoneShell {}
interface Phone {}
class Iphone implements Phone {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值