您的位置:首页 > 其它

J2SE学习笔记:设计模式之工厂模式

2013-12-01 22:15 465 查看
先来个简单工厂模式:

package cn.itcast.factory;

import java.util.Scanner;

public class EasyFactoryDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String style = sc.next();

Style s = null;
s = EasyFactory.getInstance(style);
s.show();

}

}

interface Style{
public abstract void show();

}

class WinXP implements Style{

@Override
public void show() {
System.out.println("XP风格主题");

}
}

class Win7 implements Style{
@Override
public void show() {
System.out.println("Win7风格主题");

}
}

//为了不修改主程序,增加一个可以根据参数制造所有对象的Factory
class EasyFactory{
public static Style getInstance(String className){
Style s = null;
if("xp".equals(className)) s = new WinXP();
if("win7".equals(className)) s = new Win7();

return s;

}
}

/**
* 这个只是最简单的工厂模式,工厂模式还可以结合反射和Properties或者xml使用,通过配置文件new不同的对象
* 总之,最基础的东西要学好。
* 缺点在于每增加一个子类都要修改主程序
*/


工厂模式:

package cn.itcast.factory;

import java.util.Scanner;

public class FactoryDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String style = sc.next();

Style s = null;
s = EasyFactory.getInstance(style);
s.show();
}
}

class Factory{
public static Style getInstance(String className) throws Exception{
Style style = null;
style = (Style)Class.forName(className).newInstance();

return style;
}

}

//增加子类,无需再修改主程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: