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

先来个简单工厂模式:

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

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


阅读更多
个人分类: java
上一篇J2SE学习笔记:反射与动态代理
下一篇J2SE学习笔记:IO转换流与包装模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭