⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplefactory.java

📁 简单的JAVA 工厂模式
💻 JAVA
字号:
import java.lang.reflect.*;

class MyException extends Exception{
	public MyException(){		
	}
	
	public MyException(String name){
		super(name);
		
	}
}

abstract class Shape{	
	abstract public void draw();
}

class Circle extends Shape{	
	
	public Circle(String s){
		System.out.println("s="+s);
	}
	
	public Circle(int i,String s){
		System.out.println("s="+s+" "+"i="+i);
	}
	
	public void draw(){		
		System.out.println("Circle drawed");		
	}
	public void erase(){
		System.out.println("Circle eraseded");		
	}
}


class Square extends Shape{	
	public Square(String s){
		System.out.println("s="+s);
	}
		
	public Square(int i,String s){
		System.out.println("s="+s+" "+"i="+i);
	}

	public void draw(){		
		System.out.println("Square drawed");		
	}
	public void erase(){
		System.out.println("Square eraseded");		
	}
}


class Triangle extends Shape{	
	public Triangle(String s){
		System.out.println(s+" "+s);
	}
		
	public Triangle(int i,String s){
		System.out.println("s="+s+" "+"i="+i);
	}
	public void draw(){		
		System.out.println("Triangle drawed");		
	}
	public void erase(){
		System.out.println("Triangle eraseded");		
	}
}

class Factory{
	public static Shape makeShape(String title) throws Exception{
		/*
		if (title.equals("Circle"))
			return new Circle();
		else if (title.equals("Square"))
			return new Square();
		else if (title.equals("Triangle"))
			return new Triangle();
		else
			throw new MyException("尚未定义的形状");
		*/
		/*
		
		
		*/
		
		
		/*
		Constructor[] conArr = c1.getConstructors();
		Class[] c2;
		for (int i=0; i<conArr.length; i++)
		{
			c2 = conArr[i].getParameterTypes();
			for (int j=0; j<c2.length; j++)
				System.out.println(c2[j]);
		}
		return null;
		*/
		Class c1 = Class.forName(title);
		
		
		Class[] parameterTypes = new Class[2];
		parameterTypes[0] = Integer.TYPE;
		parameterTypes[1] = Class.forName("java.lang.String");
		Constructor constructor = c1.getConstructor(parameterTypes);
		Object[] obj = new Object[2];
		obj[0] = new Integer(2);
		obj[1] = new String("hello");
		
		return (Shape)constructor.newInstance(obj);
	}	
}

public class SimpleFactory{
	public static void main(String[] args) throws Exception{
		Shape[] s = new Shape[4];
		int i = 0;
		
		s[i++] = Factory.makeShape("Circle");
		s[i++] = Factory.makeShape("Square");
		s[i++] = Factory.makeShape("Triangle");
		//s[i++] = Factory.makeShape("sb");
		
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -