📄 simplefactory.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 + -