11.24 面试官:请说下适配器模式、代理模式和装饰者模式的不同

适配器模式、代理模式和装饰者模式是设计模式中的高频设计模式,三者非常相似,需要重点区分下。直接上结论先,

  1. 装饰者模式的关注点在于添加功能。
  2. 代理模式的关注点在于控制对象的访问,其原型对象对于用户无法得知。
  3. 适配器模式关注点在于适配。
面试官:请说下适配器模式、代理模式和装饰者模式的不同

设计模式一直是Java高级面试的重点,她代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用,是众多软件开发人员长时间的总结出来的。遵循六大原则,

  • 单一职责原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特原则
  • 开闭原则

适配器模式一般使用的情况包括:系统需要使用现有的类,但此类已经不符合系统的需要。想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的的类一起工作。适配器模式在系统升级的时候使用的频率很高,对旧系统的一些功能方法在新系统中引用。

代理模式:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

装饰模式一般在下列情况使用:需要扩展一个类的功能或者给你个类增加附加责任;需要动态的给一个对象增加功能,这些功能可以再动态的撤销;需要增加有一些基本功能的排列组合而产生非常大量的功能,从而使得继承关系变得不现实。装饰模式java中的I/O文件的操作中都有体现。Java的IO库中处理流的类有FIleInputStream,FileOutputStream,DataInputStream,DataOutputStream类等。在InputStream,OutputStream,Reader,Writer结构的内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,改善的流处理器。这就体现了装饰模式的作用。


分享到:


相關文章: