WEB开发网
开发学院软件开发Python Python设计模式系列之三: 创建型Factory Method模... 阅读

Python设计模式系列之三: 创建型Factory Method模式

 2007-03-30 12:55:15 来源:WEB开发网   
核心提示: 当创建对象的职责被委托给多个帮助子类(helper subclass)中的某一个,并且希望将哪个子类是代理者这一信息局部化的时候,Python设计模式系列之三: 创建型Factory Method模式(3),需要说明的是,使用工厂方法模式创建对象并不意味着一定会让代码变得更短(实事上往往更

当创建对象的职责被委托给多个帮助子类(helper subclass)中的某一个,并且希望将哪个子类是代理者这一信息局部化的时候。

需要说明的是,使用工厂方法模式创建对象并不意味着一定会让代码变得更短(实事上往往更长),并且可能需要设计更多的辅助类,但它的确可以灵活地、有弹性地创建尚未确定的对象,从而简化了客户端应用程序的逻辑结构,并提高了代码的可读性和可重用性。

二、模式引入

工厂方法这一模式本身虽然并不复杂,但却是最重要的设计模式之一,无论是在COM、CORBA或是EJB中,都可以随处见到它的身影。面向对象的一个基本思想是在不同的对象间进行责权的合理分配,从本质上讲,工厂方法模式是一种用来创建对象的多态方法(polymorphic method),它在抽象父类中声明用来创建对象的方法接口,而具体子类则通过覆盖该方法将对象的创建过程局部化,包括是否实例化一个子类,以及是否对它进行初始化等等。从某种程度上说,工厂方法可以看成是构造函数的特殊化,其特殊性表现在能够用一致的方法来创建不同的对象,而不用担心当前正在对哪个类进行实例化,因为究竟创建哪个类的对象将取决于它的子类。

假设我们打算开发一个用于个人信息管理(Personal Information Manager,PIM)的软件,它可以保存日常工作和生活中所需的各种信息,包括地址本、电话簿、约会提醒、日程安排等等。很显然,PIM用户界面(User Interface)的设计将是比较复杂的,因为必须为每种信息的输入、验证和修改都提供单独的界面,以便同用户进行交互。比较简单的做法是在PIM中为各种信息的处理编写相应的用户界面,但代价是将导致软件的可扩展性非常差,因为一旦今后要加入对其他信息(比如银行帐户)进行管理的功能时,就必须对PIM进行修改,添加相应的用户界面,从而最终导致PIM变得越来越复杂,结构庞大而难以维护。改进的办法是将处理各种信息的用户界面从PIM中分离出来,使PIM不再关心用户如何输入数据,如何对用户输入进行验证,以及用户如何修改信息等,所有的这些都交由一个专门的软件模块来完成,而PIM要做的只是提供一个对这些个人信息进行管理的总体框架。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Python 设计模式 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接