美文网首页
设计模式-工厂方法(Factory Method)模式

设计模式-工厂方法(Factory Method)模式

作者: qyfl | 来源:发表于2019-10-11 22:39 被阅读0次

主要角色

  • 具体的产品
  • 具体的创建者

职责

解决创建对象需要大量的代码,客户端不需要知道创建对象细节。

角色关系

  • 产品类实现抽象类里的细节
  • 工厂类实现创建产品类的细节,使用工厂类得到产品类的对象

类图

类关系示意图

代码

public abstract class Video {
    public abstract void produce();
}
---
public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("录制Java课程视频");
    }
}
---
public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("录制Python课程视频");
    }
}
---
public abstract class VideoFactory {
    public abstract Video getVideo();
}
---
public class PythonVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new PythonVideo();
    }
}
---
public class JavaVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }
}

使用

public class Test {
    public static void main(String[] args) {
        VideoFactory videoFactory = new PythonVideoFactory();
        VideoFactory videoFactory2 = new JavaVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();
    }
}

技巧

  • 工厂方法设计到的角色不多,相互之间的关系也不复杂。是一个比较简单的设计模式。
  • 用 abstract 或 interface 定义抽象类都可以。

相关文章

网友评论

      本文标题:设计模式-工厂方法(Factory Method)模式

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