java工厂模式
Java  /  管理员 发布于 3年前   147
工厂模式有
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();}}
三个工厂测试的结果依次为
工厂:长征运载火箭工厂产品:长征运载火箭任务:把航天器送上太空工厂:嫦娥飞行探测器工厂产品:嫦娥探测器任务:探测月球信息工厂:神舟飞船工厂产品:神舟飞船任务:承载宇航员在太空中溜达
博主 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..xiaoB 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..BUG4 在
你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..博主 在
go语言+beego框架中获取get,post请求的所有参数中评论 @ t1 直接在router.go文件中配就ok..Jade 在
如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号