成都网站建设设计

将想法与焦点和您一起共享

web设计模式的简单工厂模式怎么实现

这篇文章主要介绍“web设计模式的简单工厂模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“web设计模式的简单工厂模式怎么实现”文章能帮助大家解决问题。

公司主营业务:网站设计制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出汉源免费做网站回馈大家。

1、写在前面的话

     首先来说说工厂模式到底有啥用?它主要作用在于实现了创建者和调用者的分离,啥子意思呢?也就是说我们调用者去创建实例时不会和创建的这个实例直接联系。

     其核心本质就是实例化对象,用工厂方法代替new操作。

2、简单工厂模式

–所谓简单工厂模式

• 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已经写好的代码)

简单工厂模式是最简单的工厂模式也是使用最多的工厂模式,但是它仍然有不足-即违反了面向对象的OCP原则(开闭原则):一个软件的实体应该对拓展开发,对修改关闭

   

我用一个代码示例来解释一下到底什么是简单工厂模式!

  1. 首先我们写一个Animal.java接口

public interface Animal {
    void speak();
}

      这里我们给了动物一个属性-----叫

  2. 然后我们分别创建 Dog.java和Cat.java两个类,并且分别都继承Animal接口

public class Cat implements Animal {
   @Override
   public void speak() {
       System.out.println("喵喵喵!");
   }
}
 
public class Dog implements Animal {
   @Override
   public void speak() {
       System.out.println("汪汪汪!");
   }
}
 

    3. 接下来我们来创建我们的动物工厂  AnimalFactory.java,并且在里面写一个创建动物的方法--CreateAnimal(String type) 并传入一个类型的参数。

public class AnimalFactory {
   public static Animal createAnimal(String type){
       if ("猫".equals(type)){ // 对类型进行判断,并返回各自的对象
           return new Cat();
       }else if ("狗".equals(type)){
           return new Dog();
       }else {
           return null;
       }
   }
}

    

    4. 最后一步就是来测试我们的代码了,我们创建一个Test.java

public class Test {
   public static void main(String[] args){
       Animal a1 = AnimalFactory.createAnimal("猫");
       a1.speak();
       Animal a2 = AnimalFactory.createAnimal("狗");
       a2.speak();
   }
}
 

运行后的结果:

喵喵喵!
汪汪汪!

Process finished with exit code 0

       从上面代码可以看出,我们没有通过 new Cat()或者 new Dog()来创建这些对象,而是通过 createAnimal()这个方法来创建对象,所以实现了创建者和调用者的分离。

       但是上面也说过,这种方法存在缺点就是违反了面向对象原则的OCP原则,如果我们再添加一种动物,那么我们必须去修改AnimalFactory里面的代码。

关于“web设计模式的简单工厂模式怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


网页标题:web设计模式的简单工厂模式怎么实现
网站URL:http://chengdu.cdxwcx.cn/article/ipghhg.html