java设计模式常见问题总结

对java的23种设计模式还不了解的同学可以参考该博客:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html

1.工厂模式与建造者模式的区别
我的理解是使用工厂模式创建出来的所有对象都是一模一样的,而使用建造者模式创建出来的不同对象可能拥有不同的属性。什么叫不同的对象拥有不同的属性呢?为了方便理解,这里举个安卓中的具体例子:AlertDialog.Builder
安卓中的AlertDialog这个类的创建就是使用了建造者模式。一般来说我们创建一个AlertDialog实例的方法是:

new AlertDialog.Builder(MainActivity.this).builder.setMessage(“确认退出吗?”).builder.setTitle(“提示”).create();

我们在每次在创建AlertDialog的时候可以设置不同的Message和Title,每次设置的不同的Message或者Title就是不同的属性。

2.代理模式与装饰器模式的区别
装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。
我们可以用另外一句话来总结这些差别:使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。