一個(gè)設(shè)計(jì)中使用比較多的模式
如果是在需求還沒確定或者是在兩個(gè)類實(shí)現(xiàn)相近功能時(shí)候,會(huì)大量使用下面的方式:
--抽象類,注意其中的newInstance方法的實(shí)現(xiàn)
package com.moonsoft.design;
public abstract class Moon {
public static Moon newInstance(String classStr){
Class re;
try {
re = Class.forName(classStr);
return (Moon)re.newInstance();
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public abstract void println();
}
--從Moon類派生出來的一個(gè)字類,提供println方法的一種實(shí)現(xiàn)方式
package com.moonsoft.design;
public class Moon1 extends Moon {
public void println(){
System.out.println("I am moon1");
}
public void myprintln(){
System.out.println("I am moon1 myprintln");
}
}
--從Moon類派生出來的另一個(gè)字類,提供println方法的另一種實(shí)現(xiàn)方式
package com.moonsoft.design;
public class Moon2 extends Moon {
public void println(){
System.out.println("I am moon2!");
}
}
--調(diào)用
Moon moon = Moon.newInstance("com.moonsoft.design.Moon1");
moon.println();
或
Moon moon = Moon.newInstance("com.moonsoft.design.Moon2");
moon.println();
--抽象類,注意其中的newInstance方法的實(shí)現(xiàn)
package com.moonsoft.design;
public abstract class Moon {
public static Moon newInstance(String classStr){
Class re;
try {
re = Class.forName(classStr);
return (Moon)re.newInstance();
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public abstract void println();
}
--從Moon類派生出來的一個(gè)字類,提供println方法的一種實(shí)現(xiàn)方式
package com.moonsoft.design;
public class Moon1 extends Moon {
public void println(){
System.out.println("I am moon1");
}
public void myprintln(){
System.out.println("I am moon1 myprintln");
}
}
--從Moon類派生出來的另一個(gè)字類,提供println方法的另一種實(shí)現(xiàn)方式
package com.moonsoft.design;
public class Moon2 extends Moon {
public void println(){
System.out.println("I am moon2!");
}
}
--調(diào)用
Moon moon = Moon.newInstance("com.moonsoft.design.Moon1");
moon.println();
或
Moon moon = Moon.newInstance("com.moonsoft.design.Moon2");
moon.println();
posted on 2006-01-04 16:41 月亮 閱讀(102) 評(píng)論(0) 編輯 收藏