黑马程序员 设计模式思维发散
?
既然要发散思维,那么我就先提几个问题:
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对象,至于这个对象是由哪些对象组成的,我们完全不了解,也不用了解。