主要角色
- 具体的产品
- 具体的创建者
职责
解决创建对象需要大量的代码,客户端不需要知道创建对象细节。
角色关系
- 产品类实现抽象类里的细节
- 工厂类实现创建产品类的细节,使用工厂类得到产品类的对象
类图
类关系示意图代码
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 定义抽象类都可以。
网友评论