科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件架构性宣言:MIDP2.0中的工厂设计模式

架构性宣言:MIDP2.0中的工厂设计模式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

手机开发人员通常使用 Generic Connection Framework 在 Mobile Information Device Profile (MIDP) 中创建和维护顺利的连接。

作者:mikko 来源:ibm 2007年11月21日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
更高级的解决方案

  虽然以上设置非常有用,但它确实存在一些限制。首先,客户机需要知道它要初始化哪些类。例如,如果需要添加第三个类 ProductC (或类似的情况),那么既需要修改客户机,也需要修改工厂类。工厂类还需要一些新方法,客户机也必须能够处理 ProductC。虽然修改一个 Factory 类很简单,但可能有许多客户机需要考虑。修改所有客户机并不是好的解决方案,而且有可能无法实现。

  工厂模式的更高级实现要向产品类添加一个抽象层。然后,客户机可以只引用抽象产品,而不必引用 ProductA 或 ProductC。我在图 3 中实现了该操作,从图中可以看出,除了两个具体产品(现在是 ConcreteProductA 和 ConcreteProductB)之外,现在有了一个抽象的 Product。

图 3. 带有抽象的工厂设计模式
带有抽象的工厂设计模式

  图 3中更高级的实现让客户机使用抽象产品进行对象处理,让 Factory 类创建具体的产品类实例。图 3 中还需要注意的是,工厂现在是抽象的。这样,在需要新工厂时(例如,需要创建新类时),就可以容易地构建新工厂。

  工厂模式简化了类的创建,而且为在现有应用程序中做修改提供了良好基础。但是,不要太过兴奋,碰到能用的地方就到处使用该模式。在某些情况下,工厂模式会给应用程序带来超乎需要的复杂性。作为架构师,您必须问自己:更简单、通用性差些的解决方案是否更好。工厂模式最适用的情况是:有许多客户机要使用应用程序的类,或者进行修改很困难或不可能时。如果要避免对客户机进行修改,则工厂模式会是一个便捷的解决方案。

  MIDP 2.0 中的工厂模式

  MIDP 2.0 通用连接框架用工厂设计模式的高级实现作为基础。顾名思义,通用连接框架的设计目的是处理所有连接种类。在 MIDP 1.0 中,该框架受到限制,只能处理 HTTP 连接,但是 MIDP 2.0 增加了 HTTPS、串口连接、套接字和更多连接。在这一节,我将把重点放在如何在 MIDP 2.0 通用连接框架中使用工厂设计模式。

  通用连接框架

  在图4中,可以看到支持 HTTP 连接处理的那部分通用连接框架。

图 4. 部分通用连接框架
部分通用连接框架
  
  请注意,因为通用连接框架实现了工厂模式,所以使用 Connection 接口可以处理所有连接。抽象是通过对接口进行扩展实现的。Connector 这个工厂类有一组用来创建连接的 open() 方法。这些 open() 方法接受字符串作为参数。这些参数的表达形式是:

 
{scheme}:[{target}][{params}] 

  {scheme} 是协议的名称,例如 HTTP,{target} 通常是某种形式的网络地址,{params} 由一系列 “;param=value” 形式的等式构成。

  MIDP 中的连接

  在 MIDP 中创建连接非常简单。要做的全部工作就是用正确的字符串调用 open() 方法,并拥有连接。例如,只用一行代码就可以打开 HTTP 连接:

 
Connection con = Connector.open("http://www.ibm.com"); 

  当字符串参数是正常的 HTTP 地址时,Connector 就打开 HTTP 连接,可以把它当作 Connection 来处理,也可以像下面这样把它转变成 HttpConnection:

 
HttpConnection httpcon = (HttpConnection)con; 
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章