二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 资讯 » 正文

创建型设计模式_工厂模式和抽象工厂模式

放大字体  缩小字体 发布日期:2022-01-13 16:01:17    作者:郭鑫哲    浏览次数:325
导读

工厂模式(Factory Method):简单点讲 就是一个接口 多个实现 需要对应得实现 就通过对应得条件来获取工厂模式是一条创建同一系列产品得流水线抽象工厂(Abstract Factory):简单讲工厂模式是一条创建同一系列产品得流

工厂模式(Factory Method):简单点讲 就是一个接口 多个实现 需要对应得实现 就通过对应得条件来获取

工厂模式是一条创建同一系列产品得流水线

抽象工厂(Abstract Factory):简单讲工厂模式是一条创建同一系列产品得流水线,那么抽象工厂模式就是多条创建不同产品得流水线得一个集合工厂,

但是,各个流水线(工厂)之间是相互独立得,并且流水线(工厂)是生产一整套有关联或者有依赖得产品(至少有两种产品)

package com.wangguo.factory;public interface Engine { void make();}class BmwEngine implements Engine{ 等Override public void make() { System.out.println("BMW 引擎制造完成"); }}class BenzEngine implements Engine{ 等Override public void make() { System.out.println("BENZ 引擎制造完成"); }}class EngineFactory{ static Engine getEngine(String name){ if ("bwm".equals(name)) { return new BmwEngine(); }else if("benz".equals(name)){ return new BenzEngine(); } return null; }}

package com.wangguo.factory;public interface Body { void make();}class BmwBody implements Body{ 等Override public void make() { System.out.println("BMW 车身制造完成"); }}class BenzBody implements Body{ 等Override public void make() { System.out.println("BENZ 车身制造完成"); }}class BodyFactory{ static Body getBody(String name){ if ("bwm".equals(name)) { return new BmwBody(); }else if("benz".equals(name)){ return new BenzBody(); } return null; }}

package com.wangguo.factory;public class CarFactory { private Body body; private Engine engine; public void makeCar(String bodyName,String engineName){ body = BodyFactory.getBody(bodyName); body.make(); Engine engine = EngineFactory.getEngine(engineName); engine.make(); System.out.println(bodyName +"车 制造完成"); }}

package com.wangguo.factory;public interface IMakeCarFactory { void makeCar();}class MakeCarFactory { static IMakeCarFactory makeCarFactory(String name) { if ("benz".equals(name)) { return new BenzMakeFactory(); } else if ("bmw".equals(name)) { return new BmwMakeFactory(); } else { return null; } }}class BenzMakeFactory implements IMakeCarFactory { static Engine engine = new BenzEngine(); static Body body = new BenzBody(); 等Override public void makeCar() { body.make(); engine.make(); }}class BmwMakeFactory implements IMakeCarFactory { static Engine engine = new BmwEngine(); static Body body = new BmwBody(); 等Override public void makeCar() { body.make(); engine.make(); }}

package com.wangguo.factory;public class FactoryShow { public static void main(String[] args) { CarFactory carFactory = new CarFactory(); //1.用户需要一辆benz车 carFactory.makeCar("benz","benz"); //2.问题来了 单一得产品是做了得 但是他组装了一台怪异得汽车 或许这车不能开 ? carFactory.makeCar("benz","bwm"); //3.把造相同型号得操作放到一个工厂里面,也就是工厂里面得工厂 IMakeCarFactory benz = MakeCarFactory.makeCarFactory("benz"); benz.makeCar(); }}//结果BENZ 车身制造完成BENZ 引擎制造完成benz车 制造完成BENZ 车身制造完成BMW 引擎制造完成benz车 制造完成BENZ 车身制造完成BENZ 引擎制造完成

 
(文/郭鑫哲)
免责声明
• 
本文仅代表发布者:郭鑫哲个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈