zoukankan      html  css  js  c++  java
  • Java工厂模式

        JAVA工厂模式由广州疯狂软件java培训分享:

      2.工厂模式

      工厂模式就是专门负责将大量有共同接口(或者共同抽象父类)的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。

      优点

      工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

      缺点

      由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

      当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;

      这些缺点在工厂方法模式中得到了一定的克服。

      使用场景

      工厂类负责创建的对象比较少;

      客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

      由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

      具体例子:

      一个Animal的抽象类

      package com.bean;

      public class Cat extends Animal{

      public void eat() {

      System.out.println("I am a Cat,I like eat fish!!");

      }

      }

      三个具体的动物类

      package com.bean;

      public class Cat extends Animal{

      public void eat() {

      System.out.println("I am a Cat,I like eat fish!!");

      }

      }

      package com.bean;

      public class Dog extends Animal{

      public void eat() {

      System.out.println("I am a dog,I like eat feat!!!!!");

      }

      }

      package com.bean;

      public class Sheep extends Animal{

      private String name;

      public String getName() {

      return name;

      }

      public void setName(String name) {

      this.name = name;

      }

      public void eat() {

      // TODO Auto-generated method stub

      }

      }

      工厂类

      package com.factory;

      import com.bean.Animal;

      import com.bean.Cat;

      import com.bean.Dog;

      import com.bean.Sheep;

      public class Animal_Factory {

      private static Animal animal = null;

      public static Animal getAnimal(String animal_name){

      if(animal_name.equals("Dog")){

      animal = new Dog();

      }

      if(animal_name.equals("Cat")){

      animal = new Cat();

      }

      if(animal_name.equals("Sheep")){

      animal = new Sheep();

      }

      return animal;

      }

      }

      测试类:

      package com.factory.test;

      import com.bean.Animal;

      import com.factory.Animal_Factory;

      public class Factory_Test {

      public static void main(String[] args) {

      Animal animal_a = Animal_Factory.getAnimal("Dog");

      animal_a.eat();

      Animal animal_b = Animal_Factory.getAnimal("Cat");

      animal_b.eat();

      }

      }

      学IT技术就学Java技术,疯狂软件Java培训机构,打造国内高级Java人才。

      疯狂软件Java培训优势

      1. Java是世界第一大编程语言,市场占有率达20%。

      2.广州最专业Java培训机构,多年教学经验。

      3.学员技术牛就业率最好,就业薪资都在5000以上。

      4.疯狂软件Java培训课程以项目实战带动教学,上课打破传统课堂模式,以实训项目贯穿教学,带领学生一起做企业真实项目。

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。高薪从IT名企请来项目经理为学员亲自授课,对学员进行实战教学,在疯狂java,通过大量全真经典企业级项目进行集中培训,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,成就感,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

      疯狂软件中心Java培训、iOS培训打造名企技术经理,成为中国软件产业的中流砥柱:全真企业需求,项目小组管理,大量实操项目的疯狂训练,企业全真案例教学,学成至少相当于两年工作经验“全真项目”教学,高强度的狂热训练,带领学生走近编程,感受编程,热爱编程,学完后产生凤凰涅槃般的重生。 “全真企业环境”模拟:以项目组形式管理,每个程序员(学员)对项目组长负责,组长向项目经理(老师)负责。以版本控制工具为引导,充分激发每个程序员对编程的激情 四个半月掌握近8~10万代码量,达到技术经理的代码掌握量。

  • 相关阅读:
    实验2(第二章课后习题)
    weekend及反位数(第一次c++作业)
    如何在Vue项目中使用百度地图
    Vue中使用js-pinyin包实现城市按首字母排序
    Webstorm中使用less编写css
    关于cookie的使用
    Vue数据双向绑定的实现
    Vue的生命周期
    Vue-cli(Vue脚手架)挂载Element-ui和axios方法
    Vue脚手架学习笔记(一)
  • 原文地址:https://www.cnblogs.com/gojava/p/3584518.html
Copyright © 2011-2022 走看看