美文网首页
工厂方法解析

工厂方法解析

作者: zhuhuix | 来源:发表于2020-03-25 10:04 被阅读0次

针对简单工厂违背开闭原则,设计模式中引入了工厂方法模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行

UML图: 在这里插入图片描述

  • 通过抽象类的方式定义Phone,并定义抽象方法produce
  • 通过接口的方式定义PhoneFactory,并定义接口方法getPhone
  • 通过继承抽象类Phone定义ApplePhone,并覆盖重写抽象方法produce进行具体产品的生产
  • 通过实现接口PhoneFactory定义ApplePhoneFactory,并覆盖重写接口方法getPhone返回具体对象
  • 通过实现接口PhoneFactory定义HuaweiPhoneFactory,并覆盖重写接口方法getPhone返回具体对象
  • 定义测试类Test创建ApplePhoneFactory和HuaweiPhoneFactory进行测试

代码:

//Phone抽象类
public abstract class Phone {
    abstract  void produce();
}
//PhoneFactory接口
public interface PhoneFactory {
    Phone getPhone();
}
//通过继承抽象类定义ApplePhone
public class ApplePhone extends  Phone {
    @Override
    void produce() {
        System.out.println("生产苹果手机");
    }
}
//通过实现接口定义ApplePhoneFactory
public class ApplePhoneFactory implements PhoneFactory {
    @Override
    public Phone getPhone() {
        return new ApplePhone();
    }
}
//通过继承抽象类定义HuaweiPhone
public class HuaweiPhone extends Phone {
    @Override
    void produce() {
        System.out.println("生产华为手机");
    }
}
//通过实现接口定义HuaweiPhoneFactory
public class HuaweiPhoneFactory implements PhoneFactory {
    @Override
    public Phone getPhone() {
        return new HuaweiPhone();
    }
}
//Test测试类
public class Test {
    public static void main(String[] args) {
        PhoneFactory phoneFactory= new ApplePhoneFactory();
        phoneFactory.getPhone().produce();

        PhoneFactory phoneFactory1 = new HuaweiPhoneFactory();
        phoneFactory1.getPhone().produce();
    }
}

总结:

工厂方法模式是简单工厂模式的衍生,遵循设计模中的“开闭”原则。在工厂方法模中有一个抽象的Factory类(可以是抽象类也可以是接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品

相关文章

  • 工厂方法解析

    针对简单工厂违背开闭原则,设计模式中引入了工厂方法模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类...

  • XML3 - XML解析编程

    JAXP解析 JAXP的DOM解析 由解析器工厂类获取解析器工厂 解析器工厂产生一个解析器 解析XML,获得一个D...

  • 【Vesta发号器源码】IdMetaFactory

    Vesta发号器源码解析——IdMetaFactory ID元数据的生产工厂 三个静态变量IdMeta 工厂方法 ...

  • 抽象工厂模式(Abstract Factory)- 最易懂的设计

    前言 在上文提到的最易懂的设计模式系列解析:工厂方法模式,发现工厂方法模式存在一个严重的问题: 一个具体工厂只能创...

  • 抽象工厂模式(Abstract Factory)- 最易懂的设计

    前言 在上文提到的最易懂的设计模式系列解析:工厂方法模式,发现工厂方法模式存在一个严重的问题: 一个具体工厂只能创...

  • 动效解析工厂:Mask 动画

    动效解析工厂:Mask 动画 动效解析工厂:Mask 动画

  • 责任链模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 外观模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 工厂模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 抽象工厂模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

网友评论

      本文标题:工厂方法解析

      本文链接:https://www.haomeiwen.com/subject/brctuhtx.html