ITKeyword,专注技术干货聚合推荐

注册 | 登录

设计模式总结-工厂模式

pengpenglin 分享于 2007-12-15

推荐:设计模式-工厂模式

      工厂模式分为三种情况:简单工厂模式,工厂方法模式,抽象工厂模式,根据不同的场景选择相应的模式。       简单工厂模式用于生产单一的产品,一般使用静

2019阿里云双11返场狂欢继续,
地址https://www.aliyun.com/1111/2019/home

前言:本文是在学习了Jdon论坛的《GoF 23种设计模式》基础上,个人总结而成,感谢Jdon的无私奉献


 工厂模式的实现可以归纳为以下四种:

1.public class CarFactory{        
       public static Car getCar(int type){
           if(type == 1){
              return new Car1();
            } else {
              return new Car2();
           }
       }
}

2. public class CarFactory{
        public static Car getCar(String carClass){
            String className = carClass;
             Class c = Class.forName(className);
             Car car = (Car)c.newInstance();
             return car;
        }
}

3. public class CarFactory{
        public static Car getCar(String carJNDIName){         
            InitialContext ic = new InitialContext();
             String className = ic.lookUp(carJNDIName);
            Car car = (Car)Class.forName(className).newInstance();
            return car;
        }
}

4. public abstract class AbstractFactory{
        public abstract Car getCar(String carClass);
        public abstract Plane getPlane(String planeClass);
}

public class Factory1 extends AbstractFactory{
      public Car getCar(String carClass){
          // 参考上面的方式1~3
          return car1;
      }

      public Plane getPlane(String planeClass){
          // 参考上面的方式1~3
          return plane1;
      }
}

public class Factory2 extends AbstractFactory{
     public Car getCar(String carClass){
          // 参考上面的方式1~3
          return car2;
     }

     public Plane getPlane(String planeClass){
          // 参考上面的方式1~3
          return plane2;
     }
}

从上面的4种方式来看,方式1~3适合于工厂所产生的对象都是属于同一个父类型的,而方式4则适合于工厂需要产生多种类型的产品,而每一种类型的产品下面又有多个子类型的情况。

而从方式1~3来看,方式1无疑是最简单的,也是最容易理解和接受的,而方式2和方式3则相对来说要高级一点。高级在哪里呢?我们可以看到,方式1中对对象的创建是使用Hardcode的形式,也即是程序员需要事先知道系统里面存在多少个类型的对象及其对应的编号,一旦增加或删除、修改了对象的类型,

推荐:java设计模式-------工厂模式

java设计模式--------工厂模式 分类和定义 1)简单工厂模式(Simple Factory):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工

则必然引起if-else块的改变,造成了维护的困难。

而方式2则采用了动态类加载的方式,方式3在方式2的基础上使用了JNDI,更进了一步,其好处是不用出现HardCode的方式,即便你后面的应用增加、删除了对象的类型,我的程序还是保持现在的样子,跟进一步来说:可以去掉那些讨厌的if-else语句。

方式4是最为复杂而且也是最为强大的一种,它在实现了对象工厂抽象的基础上,又集成了工厂方法。使到不同的工厂可以生产相同类型的产品,但产品的子类可能有所不同。就像上面的工厂1和工厂2都可以生产汽车和飞机一样,他们各自之间可以生产不同系列的产品(抽象工厂),而且每个系列下面可能有不同的型号(工厂方法)。

推荐:设计模式(一)--静态工厂模式

静态工厂模式(static factory)也叫简单工厂模式。 涉及到3个角色:工厂类角色,抽象产品类角色和具体产品类角色。 抽象产品类可以使用接口或者父类来描述产品

前言:本文是在学习了Jdon论坛的《GoF 23种设计模式》基础上,个人总结而成,感谢Jdon的无私奉献  工厂模式的实现可以归纳为以下四种: 1.public class CarFactory{                public stat

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。