• Spring框架IOC容器


    以前我们A类引用B类的时候,需要new出B类的一个实例,这种方式其实是有很多问题的,因为耦合性太高了,不利于后期代码的扩展和维护。

    现在调用其他对象的时候,我们使用IOC容器,相当与一个工厂

    工厂模式:根据我们提供的我们所需对象的实例描述,为我们返回所需要的产品

    四要素:

    1.产品的规范   接口

    2.产品  产品要实现接口

    3.工厂   负责与客户进行交互的

    4。客户端/调用  

    下面是一个简单的工厂模式的小例子

    架构:

     

    package interf;

    //规范
    public interface Animal {
      public void eat();

      public void sport();
    }

    package model;

    import interf.Animal;

    public class Cat implements Animal {

    @Override
    public void eat() {
        System.out.println("猫喜欢吃老鼠");

      }

    @Override
    public void sport() {
        System.out.println("猫喜欢睡觉");

      }

    }

    package model;

    import interf.Animal;

    public class Dog implements Animal {

    @Override
    public void eat() {
        System.out.println("狗喜欢吃骨头");

      }

    @Override
    public void sport() {
        System.out.println("狗喜欢奔跑");

      }

    }

    package model;

    import interf.Animal;

    //工厂
    public class Factory {
      //字符串常量,负责与调用者进行交互
      public static final String CAT = "cat";
      public static final String DOG = "dog";

      // 模拟用户的调用
      public Animal getAnimal(String str) {
        if (CAT.equals(str)) {
          return new Cat();
        } else if (DOG.equals(str)) {
          return new Dog();
        } else {

          return null;
        }

      }
    }

    package test;

    import interf.Animal;
    import model.Factory;

    public class FactoryTest {
      public static void main(String[] args) {
        Factory fac=new Factory();
        Animal animal=null;//用来接收返回来的对象
        animal = fac.getAnimal("cat");
        animal.eat();
        animal.sport();
      }
    }

    运行结果:

    猫喜欢吃老鼠
    猫喜欢睡觉

  • 相关阅读:
    52、saleforce 第一篇
    nodejs自定义模块
    NodeJS require路径
    Angularjs ngTable使用备忘
    HTML5拖拽功能中 dataTransfer对象详解
    Javascript闭包深入解析及实现方法
    Grunt实例
    Grunt插件uglify
    javascript 将字符串当函数执行
    多个springboot项目部署在同一tomcat上,出现jmx错误
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12102115.html
Copyright © 2020-2023  润新知