抽象工厂模式

作者: 一只啃楠木的鱼 | 来源:发表于2019-03-01 16:06 被阅读2次

    新增抽象工厂接口 CourseFactory(课程工厂)

    public interface CourseFactory {
        //获取视频
        Video getVideo();
        //获取手记
        Article getArticle();
    }
    

    新增手记的抽象类 和 抽象方法

    public abstract class Article {
        public abstract void produce();
    }
    

    新增视频的抽象类 和 抽象方法

    public abstract class Video {
    
            public abstract void produce();
    
    }
    

    继承手记抽象类

    public class JavaArticle extends Article {
    
            @Override
            public void produce() {
                    System.out.println("编写java手记");
            }
    
    }
    

    继承视频抽象类

    public class JavaVideo extends Video {
    
            @Override
            public void produce() {
                    System.out.println("录制java视频");
            }
    }
    

    新增具体实现课程抽象工厂接口的类javaCourseFactory

    public class javaCourseFactory implements CourseFactory {
    
            public Video getVideo() {
                    return new JavaVideo();
            }
    
            public Article getArticle() {
                    return new JavaArticle();
    
            }
    }
    
    

    开始测试

    public class Test {
    
            public static void main(String[] args) {
                    CourseFactory courseFactory = new javaCourseFactory();
                    Article article = courseFactory.getArticle();
                    Video video = courseFactory.getVideo();
                    video.produce();
                    article.produce();
    
            }
            
    }
    

    打印结果

    /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:51961,suspend=y,server=n -javaagent:/Users/gaozhenyu/Library/Caches/IntelliJIdea2018.3/captureAgent/debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/tools.jar:/Users/gaozhenyu/Desktop/practiseCode/java/design_pattern/target/classes:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar" com.gao.design.principle.abstractfactory.Test
    Connected to the target VM, address: '127.0.0.1:51961', transport: 'socket'
    录制java视频
    编写java手记
    Disconnected from the target VM, address: '127.0.0.1:51961', transport: 'socket'
    
    Process finished with exit code 0
    

    相关文章

      网友评论

        本文标题:抽象工厂模式

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