java设计模式的美学

抽象工厂模式

2019-03-01  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读