設計模式之工廠模式:
1、 掌握什么叫反射
2、 掌握class類的作用
3、 通過反射實例化對象
4、 通過反射調用類中方法的操作原理
5、 工廠設計的改進,重點掌握其思想,程序和配置相分離
package fac.cn;
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃蘋果");
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子");
}
}
class Factory{
public static Fruit getInstance(String className){
Fruit f=null;
if(className.equals("Apple"))
f=new Apple();
else if(className.equals("Orange"))
f=new Orange();
return f;
}
}
public class FactoryDemo {
public static void main(String args[]){
Fruit fruit=Factory.getInstance("Apple");
fruit.eat();
}
}
注:本程序的確實現了工廠操作。所有的問題集中在工廠操作中,因為每次只要一增加子類,則必須修改工廠。此時可以根據反射機制來完成,通過Class類來修改工廠
如下表即為修改的工廠類和主類
class Factory{
public static Fruit getInstance(String className){
Fruit f=null;
try {
f=(Fruit)Class.forName(className).newInstance();
}
catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
public class FactoryDemo2 {
public static void main(String args[]){
Fruit fruit=Factory.getInstance("fac2.cn.Apple");
fruit.eat();
}
}
注:在以上操作中,工廠類完全不用修改,但是每次操作應用時,都必須輸入很長的包.類.名稱,使用時很不方便。最好的方法是通過一個別名來表示這個完成的包.類名稱,而且在類增加的時候,別名也可以自動增加。所以如果想要完成這樣的操作,可以使用屬性類配置
class MyPropertiesOperate{//屬性操作類
private Properties pro=null;
private File file=new File("D:\\Workplace"+File.separator+"Fruit.properties");
public MyPropertiesOperate(){
this.pro=new Properties();
if(file.exists()){//文件存在
try {
pro.loadFromXML(new FileInputStream(file)); //讀取
}
catch (Exception e) {
}
}
else this.save();
}
private void save(){
this.pro.setProperty("Apple", "cn3.Apple");
this.pro.setProperty("Orange", "cn3.Orange");
try {
this.pro.storeToXML(new FileOutputStream(this.file),"Fruit"); //讀取
}
catch (Exception e) {
}
}
public Properties getProperties(){
return this.pro;
}
}
public class FactoryDemo3 {
public static void main(String args[]){
Properties myPro=new MyPropertiesOperate().getProperties();
Fruit fruit=Factory.getInstance(myPro.getProperty("Orange"));
fruit.eat();
}
}
注:從以上的操作代碼中發現,程序通過一個配置文件,可以控制程序的執行,也就是達到了配置文件和程序相分離的目的。這個設計思想現在還在使用中,包括三大框架等。最新的設計理論,是將注釋寫入代碼之中,讓注釋起到程序控制的作用。要實現此操作,則使用Annotation完成
posted on 2012-06-28 16:47
兔小翊 閱讀(108)
評論(0) 編輯 收藏