关闭

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

440人阅读 评论(0) 收藏 举报
分类:

先来个简单工厂模式:

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;
	}
	
}

//增加子类,无需再修改主程序


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18351次
    • 积分:457
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:10篇
    • 译文:0篇
    • 评论:0条
    文章分类