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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值