------- android培训、java培训、期待与您交流! ----------
既然要发散思维,那么我就先提几个问题:
1、面向对象编程中<面向接口编程和多态>是不是代理模式的体现?
举个例子:Animal a = new Dog();
Animal类型的a是不是具体实现new Dog()的代理?通过a访问的是不是具体的new Dog()的实现?
2、Runnable、Thread是不是策略模式的体现?
举个例子:new Thread(new Runnable(){
public void run(){……}
}).start();
通过不同的Runnable实现类(不同的策略),实现不同的功能。
3、Javascript中的事件模型是不是观察者模式的体现?
举个例子:$("#button").onClick = ……
不同:面向函数编程中注册的是事件函数,面向对象编程中注册的是监听器(对象)
4、Java集合中迭代器的实现是不是就是Javascript语言中的闭包呢?
举个例子:Iterator it = arr.iterator();
通过生成的迭代器对象能够变量集合中的元素。
5、模板方法的应用场景是不是:
1、定义一个接口
2、声明一个抽象类实现接口中的公共部分
3、不同情况下的具体实现通过继承抽象类并重写abstract方法实现。
6、命令模式中的命令对象是不是就像MVC三层架构中的C(控制器)?
民以食为天嘛,拿餐馆举个例子:
1、来餐馆吃饭的客人就像是浏览器
2、餐馆里的服务员就像是Commander,持有客人的菜单,命令厨师按照菜单做菜
3、厨师做好菜以后服务员给客人上菜
服务员解耦了客人和厨师之间的关系
7、jetty服务器中的handle是不是就是职责链模式的体现?
所有的handler的职责都是相同的:处理输入,可以返回也可以向下传递。
是不是和组合模式很像?
职责连对外显示出一个入口request和一个出口response,内部是一个黑箱;
组合模式对外显示出一个Composite对象,至于这个对象是由哪些对象组成的,我们完全不了解,也不用了解。