zoukankan      html  css  js  c++  java
  • 设计模式-工厂模式

    工厂

    UML图:

    public interface ICar {
    // 由于工厂模式仅关系对象的创建,为说明方便,无需定义方法
    }

    public class TopCar implements ICar {}

    public class MidCar implements ICar {}

    public class LowCar implements ICar {}

    public abstract class AbstractFactory {
    public abstract ICar create();
    }

    public class TopFactory extends AbstractFactory {
    @Override
    public ICar create() {
    return new TopCar();
    }
    }

    public class MidFactory extends AbstractFactory {
    @Override
    public ICar create() {
    return new MidCar();
    }
    }

    public class LowFactory extends AbstractFactory {
    @Override
    public ICar create() {
    return new LowCar();
    }
    }

    public class FactoryTest {
    public static void main(String[] args) {
    AbstractFactory obj = new TopFactory();
    ICar car = obj.create();
    }
    }

    代码分析:

      1. 工厂模式功能编制步骤

    • 定制抽象产品接口,如ICar。
    • 定制具体产品子类,如类TopCar、MidCar、LowCar。
    • 定制抽象工厂类(或接口),如AbstractFactory。其中有一个重要的create( )抽象方法。
    • 定制具体工厂子类,如UpFactory、MidFactory、DnFactory。

      2. 工厂与简单工厂模式的区别

    • 工厂模式把简单工厂中具体的工厂类(如CarSimpleFactory)划分为两层:抽象工厂层(如AbstractFactory)+具体工厂子类层(如TopFactory等)。抽象工厂层的划分丰富了框架的内涵,符合从一般到特殊的语义特点。
    • create( )方法参数的理解:在简单工厂中,create(String mark)是成员方法,表明在该方法中管理多个产品,根据mark的值产生并返回ICar对象;在工厂模式中,create( )是抽象方法,无参数,表明在具体的子类工厂中创建某个具体的产品。
    • 工厂方法更易于软件的二次开发维护,主要特征是:当需求分析发生变化时,只需要增加、删除相应的类,而不是修改已有的类。例如,若又生产一种高档的小汽车,只需要增加SuperCar 及 SuperFactory 两个类:

      若在简单工厂中,则必须修改CarSimpleFactory 工厂类中的create( )方法,增加选择分支。

  • 相关阅读:
    设计模式:单一职责原则
    多线程的创建
    Android开发基础(java)14
    面向对象编程的思想(6)
    面向对象编程的思想(5)未完成
    面向对象编程的思想(4)
    面向对象编程的思想(3)
    面向对象编程的思想(2)
    面向对象编程的思想(1)
    GDB 命令详细解释
  • 原文地址:https://www.cnblogs.com/yhc-love-cl/p/14231595.html
Copyright © 2011-2022 走看看