美文网首页
工厂模式

工厂模式

作者: 磊_5d71 | 来源:发表于2018-10-10 19:01 被阅读0次
图片.png

1、具体实现通过反射,代码量少,便于维护。
2、定义Plant接口,已经实现该接口的具体实现类
3、定义常量类,静态常量值为包引用
4、简单工厂类,返回Plant接口对象,具体实现通过Class.forName(具体的包引用).getDeclaredConstructor().newInstance()反射,返回对象
5、测试类进行测试

  • 接口Plant
package com.alan.plant;

/**
 * 定义植物类的接口
 */
public interface Plant {

    public String getName();

    public void  fight();
}
  • PlantNameConstant 常量定义类
package com.alan.plant;

public class PlantNameConstant {

    //定义植物的名称
//    public static final String BEAN_NAME = "Bean";
//    public static final String ICE_NAME = "Ice";
//    public static final String WALL_NAME = "Wall";
    //通过反射实现定义常量
    public static final String BEAN_NAME = "com.alan.plant.Bean";
    public static final String ICE_NAME = "com.alan.plant.Ice";
    public static final String WALL_NAME = "com.alan.plant.Wall";
}
  • 实现接口的具体实体类
package com.alan.plant;

public class Bean implements Plant {

    public String getName(){
        return "绿逗";
    }

    public void fight(){
        System.out.println("发射一个豆子");
    }
}
package com.alan.plant;

/**
 * 实现接口的实体类
 */
public class Ice implements Plant {

    public String getName(){
        return "蓝冰";
    }


    public void fight(){
        System.out.println("发射一个冰豆");
    }
}
package com.alan.plant;


/**
 * 实现接口的实体类
 */
public class Wall implements Plant {

    public String getName(){
        return "果墙";
    }

    public void fight(){
        System.out.println("稳稳的站在那里");
    }
}
  • 核心工厂实现类
package com.alan.factory;

import com.alan.plant.*;

public class SimpleFactory {

    /**
     * 实现方式一
     * @param name
     * @return
     */
    public  static Plant creatPlant(String name){
        Plant plant = null;
        if(PlantNameConstant.BEAN_NAME.equals(name)){
            plant = new Bean();
        }else if(PlantNameConstant.ICE_NAME.equals(name)){
            plant = new Ice();
        }else if(PlantNameConstant.WALL_NAME.equals(name)){
            plant = new Wall();
        }

        return plant;
    }

    /**
     * 实现方式二(通过反射实现)(不需要判断类了,方便多了)
     * @param name
     * @return
     */
    public static Plant createPlantByClassName(String name) throws Exception {

       return  (Plant) Class.forName(name).getDeclaredConstructor().newInstance();
    }

}
  • 功能实现类
package com.alan.util;

import com.alan.factory.SimpleFactory;
import com.alan.plant.Bean;
import com.alan.plant.Ice;
import com.alan.plant.Plant;
import com.alan.plant.Wall;

public class Function {


    public void  put(String name, int number) throws Exception {
        Plant plant = SimpleFactory.createPlantByClassName(name);
        System.out.println("将"+ plant.getName() + "放在" + number + "号草地上");
        plant.fight();
    }

}
  • 测试类
package com.alan.test;

import com.alan.plant.Plant;
import com.alan.plant.PlantNameConstant;
import com.alan.util.Function;

public class Test1 {

    public static void main(String[] args) {
        Function function = new Function();
        try {
            function.put(PlantNameConstant.BEAN_NAME,2);
            function.put(PlantNameConstant.ICE_NAME,8);
            function.put(PlantNameConstant.WALL_NAME,12);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
  • 设计模式的目的:代码复用性、增加可维护性。
  • 设计原则:单一职责原则、开闭原则、迪米特法则....


    图片.png

开闭原则

1、 对扩展开放
2、对修改关闭

图片.png

相关文章

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

      本文标题:工厂模式

      本文链接:https://www.haomeiwen.com/subject/fxkpaftx.html