黑马程序员技术交流社区

标题: [深圳特色][问答网]Android框架设计模式——(抽象... [打印本页]

作者: Jim-剣◆﹏    时间: 2016-3-27 21:36
标题: [深圳特色][问答网]Android框架设计模式——(抽象...
在面试的时候,越来越多的学员被问到一些高级的设计思想,如设计模式,今天给大家分享一个设计模式,绝大多数的android框架都是基于抽象工厂设计模式来设计的。
一、介绍
所有的工厂类都是一个目的:降低具体产品与调用者(比如说客户端)的耦合程度。对调用者隐藏产品的构造和变化(包括类名等)
举一个实际的例子,来证明工厂模式的应用场景。
  1. public class Product {
  2.         public void template() {// 模板函数——不变
  3.                 // do something......
  4.                 hook_method();
  5.         }

  6.         public void hook_method();// 卡榫函数——变
  7. }

  8. public class ProductA extends Product {
  9.         public void hook_method() {
  10.                 // do something.....
  11.         }
  12. }

  13. public class ProductB extends Product {
  14.         public void hook_method() {
  15.                 // do something.....
  16.         }
  17. }

  18. public class ProductC extends Product {
  19.         public void hook_method() {
  20.                 // do something.....
  21.         }
  22. }

  23. public class Client {
  24.         public void main(String[] arg) {
  25.                 Product proA = new ProductA();
  26.                 Product proB = new ProductB();
  27.                 Product proC = new ProductC();
  28.                 // .....如果说后面有一百个不同的Product,当然实际情况是,在不同的地方都会用到 new ProductA\B\C这样的具体字眼。
  29.                 proA.template();
  30.                 proB.template();
  31.                 proC.template();
  32.         }
  33. }
复制代码

考虑下面的问题:
1、如果说这个时候,需求变了,要你把产品的名字改了,OMGD。可以想象,你需要改多少个 new ProductX(( ▼-▼ ))。
2、更加实际的情况是,有些产品是需要量产和包装的,它们的生产都是【标准化】的,因此如果构造这样的对象较多的话,客户端与具体的产品的耦合度就大大增加,同时,客户端承担的工作也过多。
使用工厂模式解决上面的困难(1)简单工厂模式
作者: 伊乐杰    时间: 2016-3-27 23:09
折磨牛啊  看不懂
作者: 守徒徒    时间: 2016-3-28 01:10
谢谢分享哦。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2