阳泉住房和城乡建设部网站淘宝关键词top排行榜
目录
一:背景介绍
二:思路&方案
1.面向过程
2.面向对象
3.面向对象(反射)
三:过程
1.面向过程:原本何老师的作用交给我了米老师来完成。
2.面向对象:把开门的方法完全交个何老师,米老师不需要有开门的操作
3.面向对象(反射):米老师不仅仅可以叫何老师来开门,也可以叫其他老师开门
四:总结
一:背景介绍
米老师需要开办公室的门,需要进入办公室进行工作。这时候需要何老师来进行开门的操作。
二:思路&方案
1.面向过程
何老师管理钥匙,米老师需要开门,何老师把钥匙方法一个位置上。米老师到壹佰之后去拿钥匙 自己去执行开门的操作。
2.面向对象
米老师到达公司之后,米老师喊一下何老师打开办公室的门,何老师听到消息之后就过来开门了。
3.面向对象(反射)
米老师到达公司之后,米老师喊了一下给我开一下办公室的门,听到米老师消息的任意一个老师都可以过来开门。
三:过程
1.面向过程:原本何老师的作用交给我了米老师来完成。
代码
public class Client {public static void main(String[] args) {System.out.println("米老师:我需要开门");System.out.println("何老师:米老师,钥匙放在前台了,您开一下吧");System.out.println("米老师:去前台拿钥匙自己去开门了");}
}
效果
2.面向对象:把开门的方法完全交个何老师,米老师不需要有开门的操作
客户端
public class Client {public static void main(String[] args) {Notice notice=new Notice();notice.notice();}
}
业务封装类
public class Notice {private void TeahcerMiDependTeacherHeBusiness(){ReceiveMsg receiveMsgTeacherHe=new ReceiveMsg();receiveMsgTeacherHe.receiveMsg(new SendMsg());}public void notice(){this.TeahcerMiDependTeacherHeBusiness();}
}
发消息类
public class SendMsg {public void sendMsg(){System.out.println("米老师:我需要开一下门");}
}
收消息类
public class ReceiveMsg {private void open(){System.out.println("何老师:开门中。。。。。。门已打开");}public void receiveMsg(SendMsg sendMsgTeacherMi){sendMsgTeacherMi.sendMsg();this.open();}
}
结果
3.面向对象(反射):米老师不仅仅可以叫何老师来开门,也可以叫其他老师开门
客户端
public class Client {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, IOException {Notice notice=new Notice();notice.notice();}
}
业务封装类
public class Notice {private void MiAndHeBusiness() throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, NoSuchMethodException, InstantiationException, IOException {TeacherHe teacherHe = new TeacherHe();teacherHe.acceptMessage();}public void notice() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, IOException {this.MiAndHeBusiness();}
}
发送消息类
public class TeacherMi {public void sendMsg(){System.out.println("我需要开一下门");}public void sendMsgAndKey(String room,String key){System.out.println("这是"+room+"以后"+key+"由你来保管,快开门吧");}public static void sendMessage(){System.out.println("帮我开一下办公室的门");}
}
接收消息类
public class TeacherHe {public void acceptMessage() throws IOException, ClassNotFoundException, InvocationTargetException, IllegalAccessException, NoSuchMethodException, InstantiationException {this.acceptMsg();}private void acceptMsg() throws IllegalAccessException, InvocationTargetException, ClassNotFoundException, NoSuchMethodException, InstantiationException, IOException {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入要依赖的类路径");String className=br.readLine();System.out.println("请输入要执行的方法");String methodName=br.readLine();System.out.println("请输入方法要传入的第一个参数");String roomName=br.readLine();System.out.println("请输入方法要传入的第一个参数");String keyName=br.readLine();br.close();Class sendMsgClass=Class.forName(className);Method sendMsgMethod= sendMsgClass.getMethod(methodName,String.class,String.class);Object sender = sendMsgClass.newInstance();sendMsgMethod.invoke(sender,roomName,keyName);System.out.println("收到了,我来开门了");this.open();}private void open(){System.out.println("正在开门中。。。。。。。。。。。 门开了");}
}
结果
四:总结
面向过程和面向对象没有好坏之分,只是应用的场景不同。我们之所以要用面向对象的思想是因为我们要为后期的维护考虑,这样我们就需要写出来的代码容易扩展,复用性强。在面向对象的基础上使用反射,使我们的系统更加的灵活,在运行的过程中我们可以让给来开门都可以。