java工厂模式
Java  /  管理员 发布于 4年前   248
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;/** * 航天飞行接口 * * @Description * @author FuJianyong * 2015-7-14下午02:42:05 */public interface SpaceFlight { /** * 任务 */ void task(); }
具体的产品类
package 工厂模式;/** * 长征运载火箭 * * @Description * @author FuJianyong * 2015-7-14下午03:08:10 */public class LongMarch implements SpaceFlight {public LongMarch(){System.out.println("产品:\t长征运载火箭");}@Overridepublic void task() {System.out.println("任务:\t把航天器送上太空");}}
package 工厂模式;/** * 神舟飞船 * * @Description * @author FuJianyong * 2015-7-14下午03:18:00 */public class ShenzhouSpaceship implements SpaceFlight {public ShenzhouSpaceship(){System.out.println("产品:\t神舟飞船");}@Overridepublic void task() {System.out.println("任务:\t承载宇航员在太空中溜达");}}
package 工厂模式;/** * 嫦娥探测器 * * @Description * @author FuJianyong * 2015-7-14下午03:21:59 */public class ChangeProber implements SpaceFlight {public ChangeProber(){System.out.println("产品:\t嫦娥探测器");}@Overridepublic void task() {System.out.println("任务:\t探测月球信息");}}
给所有工厂定一个抽象工厂基类。
package 工厂模式;/** * 抽象工厂 * * @Description * @author FuJianyong * 2015-7-14下午02:42:17 */public abstract class Factory {/** * 生产产品 */abstract SpaceFlight produce();}
具体的工厂类
package 工厂模式;/** * 长征运载火箭工厂 * * @Description * @author FuJianyong * 2015-7-14下午04:14:45 */public class LongMarchFactory extends Factory {public LongMarchFactory(){System.out.println("工厂:\t长征运载火箭工厂");}@OverrideSpaceFlight produce() {return new LongMarch();}}
package 工厂模式;/** * 神舟飞船工厂 * * @Description * @author FuJianyong * 2015-7-14下午03:58:07 */public class SpaceshipFactory extends Factory{public SpaceshipFactory(){System.out.println("工厂:\t神舟飞船工厂");}@OverrideSpaceFlight produce() {return new ShenzhouSpaceship();}}
package 工厂模式;/** * 嫦娥飞行探测器工厂 * * @Description * @author FuJianyong * 2015-7-14下午04:00:57 */public class ProberFactory extends Factory {public ProberFactory(){System.out.println("工厂:\t嫦娥飞行探测器工厂");}@OverrideSpaceFlight produce() {return new ChangeProber();}}
测试类
package 工厂模式;/** * 测试抽象工厂 * * @Description * @author FuJianyong * 2015-7-14下午03:25:15 */public class FactoryMain{/** * @param args */public static void main(String[] args) {//具体工厂//Factory factory = new LongMarchFactory();Factory factory = new ProberFactory();//Factory factory = new SpaceshipFactory();//生产产品 SpaceFlight sapceFlight = factory.produce(); //产品属性 sapceFlight.task();}}
三个工厂测试的结果依次为
工厂:长征运载火箭工厂产品:长征运载火箭任务:把航天器送上太空工厂:嫦娥飞行探测器工厂产品:嫦娥探测器任务:探测月球信息工厂:神舟飞船工厂产品:神舟飞船任务:承载宇航员在太空中溜达
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号