[關(guān)鍵字]:java,設(shè)計模式,簡單工廠,《java與模式》
[環(huán)境]:StarUML + JDK6
[作者]:Winty (wintys@gmail.com)
簡單工廠模式:

代碼:
/**
*簡單工廠測試
*@version 2009-3-25
*@author Winty(wintys@gmail.com)
*/
package pattern.simplefactory;
public class SimpleFactory{
public static void main(String[] args){
Shape shape;
try{
shape = ArtTracer.factory("circle");
shape.draw();
shape.erase();
shape = ArtTracer.factory("square");
shape.draw();
shape.erase();
shape = ArtTracer.factory("triangle");
shape.draw();
shape.erase();
//未知圖形類型
shape = ArtTracer.factory("unknownShape");
shape.draw();
shape.erase();
}catch(BadShapeException e){
System.out.println(e.getMessage());
}
}
}
/**
*簡單工廠:繪圖員
*/
class ArtTracer{
public static Shape factory(String type)throws BadShapeException{
if(type.equalsIgnoreCase("Circle")){
return new Circle();
}else if(type.equalsIgnoreCase("Square")){
return new Square();
}else if(type.equalsIgnoreCase("Triangle")){
return new Triangle();
}else{
throw new BadShapeException(type);
}
}
}
/**
*抽象產(chǎn)品
*/
abstract class Shape{
public abstract void draw();
public abstract void erase();
}
/**
*具體產(chǎn)品
*/
class Circle extends Shape{
public void draw(){
System.out.println("Circle draw");
}
public void erase(){
System.out.println("Circle erase");
}
}
/**
*具體產(chǎn)品
*/
class Square extends Shape{
public void draw(){
System.out.println("Square draw");
}
public void erase(){
System.out.println("Square erase");
}
}
/**
*具體產(chǎn)品
*/
class Triangle extends Shape{
public void draw(){
System.out.println("Triangle draw");
}
public void erase(){
System.out.println("Triangle erase");
}
}
/**
*輔助類:當(dāng)輸入的類為不支持的圖形時,拋出異常
*/
class BadShapeException extends Exception{
public BadShapeException(String type){
super(type + ":不支持的圖形");
}
}
posted on 2009-04-14 12:26
天堂露珠 閱讀(1070)
評論(2) 編輯 收藏 所屬分類:
Pattern