java工厂模式
Java  /  管理员 发布于 6年前   365
工厂模式有
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();}}
三个工厂测试的结果依次为
工厂:长征运载火箭工厂产品:长征运载火箭任务:把航天器送上太空工厂:嫦娥飞行探测器工厂产品:嫦娥探测器任务:探测月球信息工厂:神舟飞船工厂产品:神舟飞船任务:承载宇航员在太空中溜达
test1 在
opencode + Oh-my-openagent,我的第一个免费的ai编程智能体管家:Sisyphus中评论 test..122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..Zita 在
Google AI Studio升级全栈 vibe coding体验,可直接构建带登录和数据库的应用中评论 111222..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号
