一、农业社会

最传统的创建对象的模式,每个需要使用工具的人都必须自己造一把工具,在java中的表现为调用者手动创建被调用者。

例如,在Person类中要使用Tool类,要使用一下语句:

Tool t = new Tool();

缺点:通过new创建被调用的实例,耦合度过高。

二、工业社会

进入了工业社会,随着工厂的出现,工具是由工厂生产,使用者只需要说出需要工具的名称给工厂,工厂即提供相应的工具。

在工厂类中定义方法:

 1 class Factory{
 2     
 3     public Object getInstance(String name){
 4         if(name == "ax")
 5             return new Ax();
 6         else if(name == "knife")
 7             return new Knife();
 8         else
 9         
10     }
11     
12 }

然后,在调用者中使用以下代码,即可得到斧子:

1 Factory f = new Factory();
2 Knife f = (Knife)f.getInstance("knife");

分析:在工厂设计模式中,调用者只需定位工厂,无需管理具体的实现。可以面向接口编程,让调用者和被调用者解耦。

三、共产主义-基于IoC的实现

来到共产主义,使用者甚至无需定位工厂,只要在家里说需要什么工具,然后坐等社会提供即可。

在java中即Spring依赖注入的核心思想。

过程:在调用者类中,只需要声明需要的工具(说自己需要什么),然后由Bean容器通过java的反射机制,注入工具到调用者。实例之间的依赖关系有容器提供和管理。

转载于:https://www.cnblogs.com/return/archive/2009/10/31/1593479.html

对象创建从农业社会到共产主义的发展相关推荐

  1. 跟JVM搞对象 -- 深度剖析对象创建和内存分配

    长久以来,面向对象编程大行其道.也正是因为有了面向对象的设计思想,技术才极大程度促进了社会的发展.作为新时代农民工,即已知晓或者掌握面向对象的编程方法,那么知其然也只其所以然也是我们每个人身体力行的必 ...

  2. Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值

    1. Numpy 相关知识 1.1 Ndarray 对象 在了解 OpenCV 的图像对象之前我们先对 NumPy 的基础知识做一回顾,方便我们后续更进一步理解图像对象的一系列操作. In [2]: ...

  3. (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

    1.访问控制(笔试题) 1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问 ...

  4. OpenCV【零】—————cv::Mat——Mat对象创建方法

    OpenCV (一)--Mat对象创建方法 目录 OpenCV (一)--Mat对象创建方法 1. cv::Mat优点及原理(本质类) 2. Mat类拷贝及对象的创建方法 3. Mat 对象元素的高效 ...

  5. 第163天:js面向对象-对象创建方式总结

    面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 ...

  6. 【JVM】Java对象创建的流程步骤

    · 本文摘要 · 罗列Java创建对象的各种方式: · 讲解Java对象创建的流程步骤: 一.Java创建对象的各种方式 · 1. 用关键字new,老少皆知的方法:StringBuffer sb = ...

  7. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)

    设计模式之生成器模式(对象创建型模式) 1.定义/概念 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示. 2.生成模式角色 Builder: 生成器接口,定义创建一个Produ ...

  8. Objective-C设计模式——生成器Builder(对象创建)

    生成器 生成器,也成为建造者模式,同样是创建对象时的设计模式.该模式下有一个Director(指挥者),客户端知道该类引用用来创建产品.还有一个Builder(建造者),建造者知道具体创建对象的细节. ...

  9. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  10. java简述对象的组合_Java程序运行和对象创建过程简述

    Java中一个对象创建分为两个步骤: 加载类,创建对象. 加载类是将所写的程序.java文件编译生成的.class文件加载到内存中,保证了对象创建的预置环境.类加载完毕后才可以创建该类的对象. 第一步 ...

最新文章

  1. 阿里云服务器 安全狗外部访问mysql_阿里云linux/centos服务器安全狗安装
  2. linux下文件系统不丢数据扩容方法
  3. 怎么把本地项目和远程git仓库相连通
  4. Android之linux基础教学之八 内核同步介绍
  5. Dynamics CRM中的操作(action)是否是一个事务(transaction)?
  6. Mysql视图权限设置的踩坑经历
  7. 固定底部 布局_Google Flutter 布局(四)-Baseline IntrinsicWidth详解
  8. 从零开始系类——电子元器件识别与检测技术
  9. uniapp引入阿里巴巴矢量图标库
  10. Visual Studio 2013 、Matlab 2014产品密钥
  11. C-Lodop使用及常见错误排查
  12. 数字通信系统误码性能仿真分析
  13. 错误1311。没有找到源文件:D:\MSOCache\All Users\{90150000-0015-0804-1000-0000000FF1CE}-D\AccLR.CAB。请确认存在该文件,并且您
  14. Android DocumentFile基本使用
  15. java实现 腾讯人机验证 + 前端
  16. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」
  17. 2020-06-03:抢红包设计
  18. C语言——将数字和数字字符输入给char型变量会如何?
  19. 【vite+pinia】
  20. 打造智慧工地,低代码平台助力基建行业全链路数字化升级

热门文章

  1. Gradle之全局配置
  2. 算法:整数除法上取整
  3. Coloring Flame Graphs: Code Hues
  4. OpenStack之化云为雨
  5. GPG终极指南(加密/签名)
  6. ie6-7中会出现图片下有空隙
  7. java sqlserver数据库连接_JAVA连接SQLserver数据库
  8. kswapd进程与swap、swappiness之间的关系及原理
  9. Linux下使用Shell命令控制任务Jobs执行、Linux后台进程管理以及ctrl+z
  10. glew,glfw实现最新的opengl-学习笔记4实现纹理