Spring 学习记录 冷兵器时代的故事
这篇文章的内容和 Spring 没什么关系,但还是分类到 Spring 学习了。
首先,我们来将一个故事。
很久很久以前,冷兵器时代,人们用弓和箭打仗。
版本1
public class BowAndArrow {public void killEnemy(){System.out.println("Kill enemy with bow and arrow.");}}
public class Person {public void killEnemy() {BowAndArrow bowAndArrow = new BowAndArrow();bowAndArrow.killEnemy();}}
public static void main(String[] args) {Person person = new Person();person.killEnemy();}
很简单的代码。
如果这段代码出现了 bug,问题会出在哪里?
但如果代码复杂的话,问题就不容易解决了。
版本2
public interface Weapon {public void killEnemy();
}
public class BowAndArrow implements Weapon{public void killEnemy(){System.out.println("Kill enemy with bow and arrow.");}}
public class Person {public void killEnemy() {Weapon weapon = new BowAndArrow();weapon.killEnemy();}}
我们用一个接口,抽象出了武器。
这就是接口的作用,明确边界。
版本3
public class Person {private Weapon weapon;public Person(Weapon weapon) {this.weapon = weapon;}public void killEnemy() {weapon.killEnemy();}}
public static void main(String[] args) {Person person = new Person(new BowAndArrow());person.killEnemy();}
我们发现,每次击杀敌人都要创建新的武器,这在使用上有点繁复。
依赖注入
Spring 好在哪?
耦合
单元测试
Spring 学习记录 冷兵器时代的故事相关推荐
- 中国史上战斗力最强的5支部队(冷兵器时代)
5.岳家军 北宋末年,北宋最害怕的对手契丹人流传这么一句话:女真人不满万,满万则天下无敌.最后女真人统一了,重挫契丹人,积弱的宋人依然被契丹人羞辱,女真人南下的野心被激发了,他们一路打过了淮河,但是他 ...
- 水浒传剧情不错,“冷兵器时代”拼杀场面显整齐
这里的拼杀跟<斯巴达克斯>比起来真显得太整齐了. 斯巴达克斯几乎演绎了十分另类的拼杀镜头,血腥,残暴,基本角斗士的尸体都是四分五裂的. 水浒:无论砍在哪里都吐血,难道这番茄酱汁儿做得很真实 ...
- 中国冷兵器时代的十大勇将
中国冷兵器时代的十大勇将 在冷兵器时代,两军交战都是肉搏上阵,因此涌现了不少以英勇著称的斗将,武将的个人战斗力虽然没有小说中写的那么夸张,一般也不是左右战局的关键,但还是非常重要的,不是有句俗话这么说 ...
- 我的Spring学习记录(二)
本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...
- 大数据:冷兵器时代到热兵器时代的变革
文章讲的是大数据:冷兵器时代到热兵器时代的变革,世界著名的未来学家John Naisbitt认为"我们首次拥有一个基于关键资源(信息)的经济体制,不仅是可再生的而且是自发生产的.耗尽它没关系 ...
- 攻防不对称:从冷兵器时代到网络时代
一.冷兵器时代,或者说农业化时代,进攻方没有远程可以摧城拔寨的热武器,只能靠人肉进攻,功与守是矛与盾的直接对抗,防守方依据地理优势可以轻松构筑强大的防线,使进攻方难以突破,高大的城墙,险峻的山寨,都会 ...
- Spring学习记录(九)---通过工厂方法配置bean
1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. 1 package com.guigu.spring.factory; 2 3 public c ...
- Spring学习记录
Spring相关 目录 文章目录 Spring相关 目录 前言 工厂设计模式 静态工厂模式 通用工厂模式 ApplicationContext ClassPathXmlApplicationConte ...
- spring学习记录(一)
一.spring概述 spring是什么 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP ...
最新文章
- AI | 优化背后的数学基础
- 【Java Web开发指南】有状态会话Bean(SLSB) 和无状态会话Bean(SFSB)的区别
- python 线程类 threading.Thread.run() 方法
- VUE第三篇 入门后续
- arc.archives.class.php关于分页错位怎么修改,解决织梦分页错位的办法
- 旅游(树形dp求树的最大独立集)
- Selenium 4相对定位器如何改变您的测试方式?
- CCF 201312-3 最大的矩形[比较简单]
- vxetable显示html,vxe-table分页无法显示?
- 计算油费 (15 分)
- 剑指offer题目大全
- LSB 算法matlab改进版,将二值图嵌入多张灰度图像中
- SpringMVC 学谈 (第五章)
- 【佛系养身】男程序员护肤入门
- java毕业设计瓷砖仓库管理mybatis+源码+调试部署+系统+数据库+lw
- iOS 游戏app的开发
- 用Winrar打造永不被杀的免杀捆绑器!
- Android 第三方RoundedImageView设置各种圆形、方形头像
- 7-7 稳赢 (15 分)
- 树莓派+ubuntu18.04+ROS-melodic+MAVROS+librealsense+vio+realsense_ros
热门文章
- 如何幽默的介绍php是撒,如何幽默的做自我介绍
- iOS上使用自定义ttf字体
- 关于Android系统隐藏导航栏的两种方法
- 为什么低代码和专业代码走向融合才能破解低代码困境?
- webstorm 2018破解版本下载
- 慢慢消失的4K蓝光播放器命运会走向何方
- 裁撤一批员工后,马斯克又开始招人,推特2.0 PPT曝光
- 【亲测成功】springboot中.yml没有spring的小叶子标志和项目中也没有spring绿色标志的解决办法
- 微信小程序---- 外卖小程序查看实时地图路线(骑手端用户端)【高德地图】
- chromebook刷机_如何将文件复制到Chromebook上的USB闪存驱动器