Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
无难事者若执
23种设计模式
提交
8a75c0b8
23种设计模式
项目概览
无难事者若执
/
23种设计模式
与 Fork 源项目一致
Fork自
inscode / Java
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
23种设计模式
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8a75c0b8
编写于
10月 19, 2023
作者:
E
ex_kongxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(中介者模式):create
上级
dc087054
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
261 addition
and
41 deletion
+261
-41
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java
...om/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java
+23
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java
...m/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java
+33
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Home.java
...om/kongxiang/raindrop/dp/type/behavior/mediator/Home.java
+24
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/HomeRegister.java
...iang/raindrop/dp/type/behavior/mediator/HomeRegister.java
+63
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java
...m/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java
+23
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Main.java
...om/kongxiang/raindrop/dp/type/behavior/mediator/Main.java
+37
-0
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Mediator.java
...ongxiang/raindrop/dp/type/behavior/mediator/Mediator.java
+58
-0
java/com/kongxiang/raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java
...raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java
+0
-41
未找到文件。
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
Bank
{
// 信用验证
public
boolean
checkCredit
(
String
user
)
{
if
(
"zhangsan"
.
equals
(
user
))
{
return
true
;
}
throw
new
IllegalArgumentException
(
"买家信用不够"
);
}
public
void
dealMoney
(
Buyer
buyer
,
Homer
homer
)
{
homer
.
money
+=
homer
.
home
.
price
;
buyer
.
money
-=
homer
.
home
.
price
;
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
Buyer
{
/**
* 姓名
*/
public
String
name
;
/**
* 拥有的金钱
*/
public
int
money
;
public
Home
home
;
public
Buyer
(
String
name
,
int
money
)
{
this
.
money
=
money
;
this
.
name
=
name
;
}
public
void
buyHome
(
Mediator
mediator
)
throws
Exception
{
Homer
homer
=
mediator
.
findHomer
();
mediator
.
checkCredit
(
this
);
mediator
.
checkMoney
(
this
.
money
,
homer
.
home
.
price
);
mediator
.
deal
(
this
,
homer
);
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Home.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
import
lombok.ToString
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
@ToString
public
class
Home
{
// 户主
public
String
master
;
// 价格
public
int
price
;
public
Home
(
String
master
,
int
price
)
{
this
.
master
=
master
;
this
.
price
=
price
;
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/HomeRegister.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
HomeRegister
{
private
Map
<
String
,
Home
>
register
=
new
HashMap
<>();
/**
* 办理房产证,注册房源信息
*
* @param name
* @param home
*/
public
void
register
(
String
name
,
Home
home
)
{
register
.
put
(
name
,
home
);
}
/**
* 交易
*
* @param buyer
* @param homer
* @throws Exception
*/
public
void
deal
(
Buyer
buyer
,
Homer
homer
)
throws
Exception
{
Home
home
=
register
.
get
(
homer
.
name
);
if
(
home
==
null
)
{
throw
new
Exception
(
"卖家没有登记的房源 "
+
homer
.
name
);
}
if
(
homer
.
home
!=
home
)
{
throw
new
Exception
(
"卖家登记的房源和买卖的不一致 "
+
homer
.
name
);
}
Home
remove
=
register
.
remove
(
homer
.
name
);
register
.
put
(
buyer
.
name
,
remove
);
buyer
.
home
=
homer
.
home
;
homer
.
home
=
null
;
buyer
.
home
.
master
=
buyer
.
name
;
}
/**
* 房源是否存在
*
* @param name
* @param home
* @return
*/
public
boolean
homeExist
(
String
name
,
Home
home
)
{
Home
home1
=
register
.
get
(
name
);
if
(
home1
==
home
)
{
return
true
;
}
return
false
;
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
import
lombok.ToString
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
@ToString
public
class
Homer
{
public
String
name
;
public
Home
home
;
public
int
money
;
public
Homer
(
String
name
,
Home
home
)
{
this
.
name
=
name
;
this
.
home
=
home
;
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Main.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
Main
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
HomeRegister
homeRegister
=
new
HomeRegister
();
Mediator
m
=
new
Mediator
(
homeRegister
);
Bank
bank
=
new
Bank
();
m
.
setBank
(
bank
);
String
homerName
=
"lisi"
;
Home
home
=
new
Home
(
homerName
,
100000
);
homeRegister
.
register
(
homerName
,
home
);
Homer
homer
=
new
Homer
(
homerName
,
home
);
// 申请卖房
m
.
registerHomer
(
homer
);
// 买房流程
String
buyerName
=
"zhangsan"
;
Buyer
buyer
=
new
Buyer
(
buyerName
,
2000
);
System
.
out
.
println
(
"买家买了房子 :买家"
+
buyer
.
name
+
" 房子"
+
buyer
.
home
+
" 余额"
+
buyer
.
money
);
System
.
out
.
println
(
"卖家卖了房子 :卖家"
+
homer
.
name
+
" 房子"
+
homer
.
home
+
" 余额"
+
homer
.
money
);
System
.
out
.
println
(
"买房前"
);
buyer
.
buyHome
(
m
);
System
.
out
.
println
(
"买家买了房子 :买家"
+
buyer
.
name
+
" 房子"
+
buyer
.
home
+
" 余额"
+
buyer
.
money
);
System
.
out
.
println
(
"卖家卖了房子 :卖家"
+
homer
.
name
+
" 房子"
+
homer
.
home
+
" 余额"
+
homer
.
money
);
}
}
java/com/kongxiang/raindrop/dp/type/behavior/mediator/Mediator.java
0 → 100644
浏览文件 @
8a75c0b8
package
com.kongxiang.raindrop.dp.type.behavior.mediator
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
Mediator
{
private
HomeRegister
homeRegister
;
Bank
bank
;
public
Mediator
(
HomeRegister
aHomeRegister
)
{
this
.
homeRegister
=
aHomeRegister
;
}
public
void
setBank
(
Bank
bank
)
{
this
.
bank
=
bank
;
}
/**
* 卖房者
*/
private
Homer
homer
;
public
void
registerHomer
(
Homer
homer
)
{
if
(
null
!=
homer
.
home
)
{
}
this
.
homer
=
homer
;
}
public
Homer
findHomer
()
{
return
homer
;
}
public
boolean
checkCredit
(
Buyer
buyer
)
throws
Exception
{
return
bank
.
checkCredit
(
buyer
.
name
);
}
public
void
checkMoney
(
int
money
,
int
price
)
{
if
(
money
<=
price
){
throw
new
IllegalArgumentException
(
"买家金额不够"
);
}
}
/**
* 交易
* @param buyer
* @param homer
*/
public
void
deal
(
Buyer
buyer
,
Homer
homer
)
throws
Exception
{
bank
.
dealMoney
(
buyer
,
homer
);
homeRegister
.
deal
(
buyer
,
homer
);
}
}
java/com/kongxiang/raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java
已删除
100644 → 0
浏览文件 @
dc087054
package
com.kongxiang.raindrop.dp.type.behavior.observer.pubsub
;
import
com.kongxiang.raindrop.dp.type.behavior.observer.Observer
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author 孔翔
* @since 2023-10-19
* copyright for author : 孔翔 at 2023-10-19
* dp
*/
public
class
Dispatcher
{
/**
* 维护观察者的列表
*/
protected
List
<
Observer
>
observerList
=
new
ArrayList
<>();
/**
* 增加一个观察者
*/
public
void
register
(
Observer
observer
)
{
observerList
.
add
(
observer
);
}
/**
* 移除一个观察者
*/
public
void
remove
(
Observer
observer
)
{
observerList
.
remove
(
observer
);
}
/**
* 通知方法
*/
public
void
notifyAllObserver
()
{
observerList
.
forEach
((
o
)
->
o
.
update
(
this
));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录