码上见分晓!
中文版本的设计模式详解,案例中的代码尽量使用了中文.
以游戏和生活中较好理解的场景讲解设计模式的实际用法,便于理解吸收,让设计模式的学习不再困难!!!
更多设计模式欢迎来到我的开源项目设计模式中文版
https://gitee.com/nightrunner/chinese-version-of-design-patterns
import java.util.ArrayList;
import java.util.List;
/**
* 我来帮你管理地洞里放几个人!
*/
class 静态代理模式主程序 {
public static void main(String[] args) {
兽族地洞静态代理 代理 = new 兽族地洞静态代理(new 兽族地洞());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
代理.放入一个单位(new 兽族苦工());
}
}
class 兽族地洞静态代理 implements 魔兽容器接口<兽族苦工> {
private 魔兽容器接口 地洞;
public 兽族地洞静态代理(魔兽容器接口 地洞) {
this.地洞 = 地洞;
}
@Override
public void 放入一个单位(兽族苦工 兽族苦工) {
if (地洞.获取单位们().size() <= 3) {
地洞.放入一个单位(兽族苦工);
} else {
System.out.println("不能在加入更多的苦工啦");
}
}
@Override
public List<兽族苦工> 获取单位们() {
return 地洞.获取单位们();
}
@Override
public Integer 获取最大容量() {
return 4;
}
}
class 兽族地洞 implements 魔兽容器接口<兽族苦工> {
List<兽族苦工> 苦工们 = new ArrayList<>();
@Override
public void 放入一个单位(兽族苦工 兽族苦工) {
苦工们.add(兽族苦工);
System.out.println("成功放入一个单位");
}
@Override
public List<兽族苦工> 获取单位们() {
return 苦工们;
}
@Override
public Integer 获取最大容量() {
return 4;
}
}
class 兽族苦工 implements 魔兽单位接口 {
@Override
public Integer 获取单位体积() {
return 1;
}
}
interface 魔兽容器接口<T> {
void 放入一个单位(T 魔兽单位);
List<T> 获取单位们();
Integer 获取最大容量();
}
interface 魔兽单位接口 {
Integer 获取单位体积();
}