这个应该比较简单一点。
某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式。现使用工厂方法模式设计该系统,并写出相应Java代码。
interface Log{
public void writeLog()
}
class FileLog implements Log{
public void writeLog(){
System.out.println("文件记录")
}
}
class DatabaseLog implements Log{
public void writeLog(){
System.out.println("数据库记录")
}
}
interface LogFactory{
public Log createLog()
}
class FileLogFactory implements LogFactory{
public Log createLog(){
return new FileLog()
}
}
class DatabaseLogFactory implements LogFactory{
public Log createLog(){
return new DatabaseLog()
}
}
public class Client{
public static void main(String[] args) {
try{
Log log
LogFactory factory
//这里可以改成使用DOM和Java反射机制读取XML文件,获取工厂类名
factory=new DatabaseLogFactory ()
log=factory.createLog()
log.writeLog()
}
catch(Exception e){
System.out.println(e.getMessage())
}
}
}
工厂模式简单的讲就是用工厂方法代替了new的操作,在通俗点就是说,你new一个对象的时候直接调用工厂方法就行了,
在编程时,需要定义一个工厂接口,由不同的的子类去实现,再定一个具体工厂类,定义一个产生实例的方法,我们通过这个方法来获得实例就行了,