简单工厂和工厂方法模式-代码分析
发布日期:2021-06-30 21:07:58
浏览次数:2
分类:技术文章
本文共 2583 字,大约阅读时间需要 8 分钟。
简单工厂模式角色如下:
- 抽象产品- Productor
- 具体产品- OneNewProductor TwoNewProductor ThreeNewProductor ...
- 简单工厂- EasyFactory
public abstract class Productor { public abstract void start(); public abstract void end();}
public class OneNewPDC extends Productor{ @Override public void start() { // TODO Auto-generated method stub System.out.println("型号1产品开始"); } @Override public void end() { // TODO Auto-generated method stub System.out.println("型号1产品结束"); }}
public class TwoNewPDC extends Productor{ @Override public void start() { // TODO Auto-generated method stub System.out.println("型号2产品开始"); } @Override public void end() { // TODO Auto-generated method stub System.out.println("型号2产品结束"); }}
public class ThreeNewPDC extends Productor { @Override public void start() { // TODO Auto-generated method stub System.out.println("型号3产品开始"); } @Override public void end() { // TODO Auto-generated method stub System.out.println("型号3产品结束"); }}
public class EasyFactory { public static Productor creatProductor(int type){ Productor productor = null; switch(type){ case 1: productor = new OneNewPDC(); break; case 2: productor = new TwoNewPDC(); break; //如果用简单工厂想要生产一个新的productor,则需要改动工厂的代码,违背了开放封闭原则。 case 3: productor = new ThreeNewPDC(); break; } return productor; }}
工厂方法模式角色如下:
- 同上 抽象产品- Productor
- 同上 具体产品- OneNewProductor TwoNewProductor ThreeNewProductor ...
- 抽象工厂- AbstarctFactory
- 具体工厂- PFactory
public abstract class AbstarctFactory { public abstractT creatProductor(Class clt);}
public class PFactory extends AbstarctFactory{ @Override publicT creatProductor(Class clt) { Productor productor = null; String classname = clt.getName(); try { productor = (Productor) Class.forName(classname).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) productor; }}
测试代码:
public class Client { public static void main(String[] args) { //工厂方法模式 PFactory pFactory = new PFactory(); //如果需要生产新的productor,只需要新建一个newProductor类即可,而不需要改动具体工厂PFactory的代码 OneNewPDC oneNewPDC = pFactory.creatProductor(OneNewPDC.class); TwoNewPDC twoNewPDC = pFactory.creatProductor(TwoNewPDC.class); oneNewPDC.start(); twoNewPDC.start(); oneNewPDC.end(); twoNewPDC.end(); ThreeNewPDC threeNewPDC = pFactory.creatProductor(ThreeNewPDC.class); threeNewPDC.start(); threeNewPDC.end(); //简单工厂模式 EasyFactory easyFactory = new EasyFactory(); easyFactory.creatProductor(1); easyFactory.creatProductor(2); //如果需要生产新的productor,需要改动工厂的代码,要新增一个case分支,用于生成新产品。 easyFactory .creatProductor(3); }}
转载地址:https://liuyan.blog.csdn.net/article/details/81384264 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月09日 07时32分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
手把手教你--JAVA微信支付(H5支付)
2019-04-30
solr修改schema文件(solr修改配置文件)
2019-04-30
Bootstrap datetimepicker日期时间插件使用方法(日期时间选择器)
2019-04-30
字体图标库(Font Awesome)的使用--绝佳的图标字体库和CSS框架
2019-04-30
select下拉框分组展示插件的使用--(select-mania插件的使用)
2019-04-30
Java 8新特性之--lambda表达式的使用和应用
2019-04-30
Java Lambda表达式的应用--Stream API操作集合框架
2019-04-30
省市区三级联动插件Distpicker--前端实现地区三级联动
2019-04-30
solr的使用详解
2019-04-30
Myslq连接(JDBC)url属性的参数的设置
2019-04-30
关于Java继承,重载及运行的顺序的总结
2019-04-30
关于Spring MVC与前端的交互
2019-04-30
Mybatis逆向工程的使用
2019-04-30
关于Hibernate的优缺点
2019-04-30
常用的 Maven 命令
2019-04-30
常用的20个正则表达式
2019-04-30
数据结构之顺序表的实现
2019-04-30