简单工厂和工厂方法模式-代码分析
发布日期: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 abstract 
T creatProductor(Class
clt);}
public class PFactory extends AbstarctFactory{	@Override	public 
T 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JFrame简单使用
下一篇:线程让步(yield)和线程睡眠(sleep)区别

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月09日 07时32分17秒