1.简单工厂设计模式
代码
Video
package Factory.简单工厂;
public abstract class Video {
public abstract void product();
}
JavaVideo
package Factory.简单工厂;
public class JavaVideo extends Video
{
public void product() {
System.out.println("java");
}
}
PythonVideo
package Factory.简单工厂;
public class PythonVideo extends Video
{
public void product() {
System.out.println("Python");
}
}
VideoFactory
package Factory.简单工厂;
public class VideoFactory {
//通过反射
public Video getVideoclass(Class c){
Video video= null;
try {
video = (Video) Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return video;
}
public Video getVideo(String type){
if ("java".equalsIgnoreCase(type))
return new JavaVideo();
if ("python".equalsIgnoreCase(type))
return new PythonVideo();
return null;
}
}
Test1
package Factory.简单工厂;
import org.junit.Test;
public class Test1 {
@Test
public void t1(){
VideoFactory videoFactory=new VideoFactory();
Video video = videoFactory.getVideo("java");
if (video==null)
return;
video.product();
}
@Test
public void t2(){
VideoFactory videoFactory=new VideoFactory();
Video video = videoFactory.getVideoclass(JavaVideo.class);
if (video==null)
return;
video.product();
}
}
2.工厂设计模式
3.抽象工厂