ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java设计模式-工厂方法模式和抽象工厂模式(1/2)

来源:网络整理     时间:2016-05-13     关键词:java设计模式,抽象工厂模式

本篇文章主要介绍了"Java设计模式-工厂方法模式和抽象工厂模式",主要涉及到java设计模式,抽象工厂模式方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 工厂方法模式定义:即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系1,一抽象工厂类派生出多个具...

工厂方法模式定义:

即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类具体产品类)。“一对一”的关系

1,一抽象工厂类派生出多个具体工厂类;

2,一抽象产品类派生出多个具体产品类

3,每个具体工厂类只能创建一个具体产品类的实例。

UML图:

抽象工厂模式 java,java中抽象工厂模式,抽象工厂模式java例子,抽象工厂模式实例,抽象工厂模式ppt,抽象工厂模式类图,抽象工厂模式的优缺点,java工厂模式实例,简单工厂模式java,java中工厂模式,java工厂模式的好处,java设计模式详解,java常用设计模式,java设计模式视频,java中的设计模

角色模块:

1,抽象工厂类:工厂方法模式的核心,定义一个创建对象的接口

2,具体工厂类:继承抽象工厂类,实现其工厂方法,实现具体业务逻辑

3,抽象产品类:是工厂方法模式所创建的产品的父类

4,具体产品类:实现抽象产品类的某个具体产品的对象。

工厂方法模式的代码模板

Product.java

package com.hust.factory1;
//抽象产品类
public abstract class Product {
	//产品类的抽象方法,有具体的产品类去实现
      public abstract void method();
}
ConcreteProductA.java
package com.hust.factory1;
//具体产品类A
public class ConcreteProductA extends Product {

	public void method() {
		System.out.println("我是具体产品类A");
	}

}
ConcreteProductB.java
package com.hust.factory1;
//具体产品类B
public class ConcreteProductB extends Product {

	public void method() {
		System.out.println("我是具体产品类B");
	}

}
Factory.java
package com.hust.factory1;
//抽象工厂类
public abstract class Factory {
	//抽象的工厂方法,具体生产什么有子类去实现
      public abstract  T createProduct(Class clz);
}
ConcreteFactory.java
/**
 * 
 */
package com.hust.factory1;

/**
 * @author tuke
 *
 */
public class ConcreteFactory extends Factory {

	/* 
	 * 需要哪一个类就传入哪一个类的类型
	 */
	public  T createProduct(Class clz) {//传入一个class类要决定生产哪一个产品
		  Product p=null;
		  try {
			p=(Product) Class.forName(clz.getName()).newInstance();//根据类加载器实例化对象
		}  catch (Exception e) {			
			e.printStackTrace();
		}
		return (T) p;
	}

}

Test.java
package com.hust.factory1;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Factory mFactory=new ConcreteFactory();//实例化具体工厂
		Product mProductA=mFactory.createProduct(ConcreteProductA.class);//根据类名初始化具体产品
		mProductA.method();
		Product mProductB=mFactory.createProduct(ConcreteProductB.class);
		mProductB.method();

	}

}
输出:
我是具体产品类A
我是具体产品类B
具体实现例子:由工厂方法生产奥迪Q3,奥迪Q5,奥迪Q7

AudiCar.java

上一篇二叉树的镜像 下一篇Spark RDD详解

相关图片

相关文章