Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
itstack-demo-design
提交
4d3bb58f
I
itstack-demo-design
项目概览
门心叼龙
/
itstack-demo-design
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
itstack-demo-design
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4d3bb58f
编写于
7月 09, 2020
作者:
小傅哥
⛹
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
小傅哥 | 重学 Java 设计模式:实战访问者模式「模拟家长与校长,对学生和老师的不同视角信息的访问场景」
上级
ee25a338
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
200 addition
and
0 deletion
+200
-0
itstack-demo-design-22-00/pom.xml
itstack-demo-design-22-00/pom.xml
+15
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/DataView.java
...22-00/src/main/java/org/itstack/demo/design/DataView.java
+34
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/User.java
...2-00/src/main/java/org/itstack/demo/design/user/User.java
+21
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/impl/Student.java
.../main/java/org/itstack/demo/design/user/impl/Student.java
+21
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/impl/Teacher.java
.../main/java/org/itstack/demo/design/user/impl/Teacher.java
+24
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/Visitor.java
...rc/main/java/org/itstack/demo/design/visitor/Visitor.java
+14
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/impl/Parent.java
...ain/java/org/itstack/demo/design/visitor/impl/Parent.java
+22
-0
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/impl/Principal.java
.../java/org/itstack/demo/design/visitor/impl/Principal.java
+22
-0
itstack-demo-design-22-00/src/test/java/org/itstack/demo/design/test/ApiTest.java
...0/src/test/java/org/itstack/demo/design/test/ApiTest.java
+26
-0
pom.xml
pom.xml
+1
-0
未找到文件。
itstack-demo-design-22-00/pom.xml
0 → 100644
浏览文件 @
4d3bb58f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
itstack-demo-design
</artifactId>
<groupId>
org.itstack
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
itstack-demo-design-22-00
</artifactId>
</project>
\ No newline at end of file
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/DataView.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design
;
import
org.itstack.demo.design.user.User
;
import
org.itstack.demo.design.user.impl.Student
;
import
org.itstack.demo.design.user.impl.Teacher
;
import
org.itstack.demo.design.visitor.Visitor
;
import
java.util.ArrayList
;
import
java.util.List
;
// 数据看版
public
class
DataView
{
List
<
User
>
userList
=
new
ArrayList
<
User
>();
public
DataView
()
{
userList
.
add
(
new
Student
(
"谢飞机"
,
"重点班"
,
"一年一班"
));
userList
.
add
(
new
Student
(
"windy"
,
"重点班"
,
"一年一班"
));
userList
.
add
(
new
Student
(
"大毛"
,
"普通班"
,
"二年三班"
));
userList
.
add
(
new
Student
(
"Shing"
,
"普通班"
,
"三年四班"
));
userList
.
add
(
new
Teacher
(
"BK"
,
"特级教师"
,
"一年一班"
));
userList
.
add
(
new
Teacher
(
"娜娜Goddess"
,
"特级教师"
,
"一年一班"
));
userList
.
add
(
new
Teacher
(
"dangdang"
,
"普通教师"
,
"二年三班"
));
userList
.
add
(
new
Teacher
(
"泽东"
,
"实习教师"
,
"三年四班"
));
}
// 展示
public
void
show
(
Visitor
visitor
)
{
for
(
User
user
:
userList
)
{
user
.
accept
(
visitor
);
}
}
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/User.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.user
;
import
org.itstack.demo.design.visitor.Visitor
;
// 基础用户信息
public
abstract
class
User
{
public
String
name
;
// 姓名
public
String
identity
;
// 身份;重点班、普通班 | 特级教师、普通教师、实习教师
public
String
clazz
;
// 班级
public
User
(
String
name
,
String
identity
,
String
clazz
)
{
this
.
name
=
name
;
this
.
identity
=
identity
;
this
.
clazz
=
clazz
;
}
// 核心访问方法
public
abstract
void
accept
(
Visitor
visitor
);
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/impl/Student.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.user.impl
;
import
org.itstack.demo.design.user.User
;
import
org.itstack.demo.design.visitor.Visitor
;
// 学生
public
class
Student
extends
User
{
public
Student
(
String
name
,
String
identity
,
String
clazz
)
{
super
(
name
,
identity
,
clazz
);
}
public
void
accept
(
Visitor
visitor
)
{
visitor
.
visit
(
this
);
}
public
int
ranking
()
{
return
(
int
)
(
Math
.
random
()
*
100
);
}
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/user/impl/Teacher.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.user.impl
;
import
org.itstack.demo.design.user.User
;
import
org.itstack.demo.design.visitor.Visitor
;
import
java.math.BigDecimal
;
// 老师
public
class
Teacher
extends
User
{
public
Teacher
(
String
name
,
String
identity
,
String
clazz
)
{
super
(
name
,
identity
,
clazz
);
}
public
void
accept
(
Visitor
visitor
)
{
visitor
.
visit
(
this
);
}
// 升本率
public
double
entranceRatio
()
{
return
BigDecimal
.
valueOf
(
Math
.
random
()
*
100
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
}
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/Visitor.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.visitor
;
import
org.itstack.demo.design.user.impl.Student
;
import
org.itstack.demo.design.user.impl.Teacher
;
public
interface
Visitor
{
// 访问学生信息
void
visit
(
Student
student
);
// 访问老师信息
void
visit
(
Teacher
teacher
);
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/impl/Parent.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.visitor.impl
;
import
org.itstack.demo.design.user.impl.Student
;
import
org.itstack.demo.design.user.impl.Teacher
;
import
org.itstack.demo.design.visitor.Visitor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
// 家长
public
class
Parent
implements
Visitor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
Parent
.
class
);
public
void
visit
(
Student
student
)
{
logger
.
info
(
"学生信息 姓名:{} 班级:{} 排名:{}"
,
student
.
name
,
student
.
clazz
,
student
.
ranking
());
}
public
void
visit
(
Teacher
teacher
)
{
logger
.
info
(
"老师信息 姓名:{} 班级:{} 级别:{}"
,
teacher
.
name
,
teacher
.
clazz
,
teacher
.
identity
);
}
}
itstack-demo-design-22-00/src/main/java/org/itstack/demo/design/visitor/impl/Principal.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.visitor.impl
;
import
org.itstack.demo.design.user.impl.Student
;
import
org.itstack.demo.design.user.impl.Teacher
;
import
org.itstack.demo.design.visitor.Visitor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
// 校长
public
class
Principal
implements
Visitor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
Principal
.
class
);
public
void
visit
(
Student
student
)
{
logger
.
info
(
"学生信息 姓名:{} 班级:{}"
,
student
.
name
,
student
.
clazz
);
}
public
void
visit
(
Teacher
teacher
)
{
logger
.
info
(
"学生信息 姓名:{} 班级:{} 升学率:{}"
,
teacher
.
name
,
teacher
.
clazz
,
teacher
.
entranceRatio
());
}
}
itstack-demo-design-22-00/src/test/java/org/itstack/demo/design/test/ApiTest.java
0 → 100755
浏览文件 @
4d3bb58f
package
org.itstack.demo.design.test
;
import
org.itstack.demo.design.DataView
;
import
org.itstack.demo.design.visitor.impl.Parent
;
import
org.itstack.demo.design.visitor.impl.Principal
;
import
org.junit.Test
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
ApiTest
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
ApiTest
.
class
);
@Test
public
void
test
(){
DataView
dataView
=
new
DataView
();
logger
.
info
(
"\r\n家长视角访问:"
);
dataView
.
show
(
new
Parent
());
// 家长
logger
.
info
(
"\r\n校长视角访问:"
);
dataView
.
show
(
new
Principal
());
// 校长
}
}
pom.xml
浏览文件 @
4d3bb58f
...
...
@@ -58,6 +58,7 @@
<module>
itstack-demo-design-20-01
</module>
<module>
itstack-demo-design-20-02
</module>
<module>
itstack-demo-design-21-00
</module>
<module>
itstack-demo-design-22-00
</module>
</modules>
<dependencies>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录