------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
设计模式
一工厂设计模式
1、作用
工厂设计模式的作用:有一个专门用于生产对象的方法。
2、工厂设计模式的书写方法
创建一个框架用于根据产配置文件产生任意类型的对象。
步骤:
1、创建一个BufferReader读取配置文件。
2、根据读取到的完整类名通过forName(String s)创建Class对象
3、通过newInstance()获取Object对象
4、通过BufferedReader读取配置文件获取成员的名称和值
5、通过getDeclareField()获取成员变量
6、通过getType()判断成员变量的类型,并通过set(Obj,value)给对象成员变量赋值
3、工厂设计模式的代码
package it.heima.design;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Field;
//工厂设计模式,有一个专门用于生产对象的方法
public class FactoryDemo {
public static void main(String[] args) throws Exception {
Object obj=Factory.getInstance();
System.out.println(obj);
}
}
class Factory{
public static Object getInstance() throws IOException, Exception{
BufferedReader bufferedReader=new BufferedReader(new FileReader("E:\\JavaSE_WorkSpace\\AllTest\\src\\it\\heima\\design\\properties.txt"));
String className=null; //获取类名
className=bufferedReader.readLine(); //读第一行获取类对象
Class clazz=Class.forName(className);
Object obj=clazz.newInstance(); //创建该类对象
String line=null; //给对象设置值
while((line=bufferedReader.readLine())!=null){
String[] datas=line.split("="); //properties的内容都是键值对,用=分割
//获取成员
Field field=clazz.getDeclaredField(datas[0]);
field.setAccessible(true); //成员一般是私有的,要暴力反射
if(field.getType()==int.class){ //获取成员类型,进行转换再复制
field.set(obj, Integer.parseInt(datas[1]));
}if(field.getType()==String.class){
field.set(obj, datas[1]);
}else if(field.getType()==boolean.class){
field.setBoolean(obj, Boolean.valueOf(datas[1]));
}
}
return obj;
}
}
二、观察者设计模式
1、观察者设计模式