Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
design
提交
65929cf3
D
design
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
design
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
design
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
65929cf3
编写于
7月 30, 2023
作者:
Kwan的解忧杂货铺@新空间代码工作室
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:装饰器模式和享元模式
上级
6a331d51
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
14 deletion
+39
-14
src/main/java/com/study/design/pay/additionalDecorator/AbstractAddFuncDecorator.java
...ign/pay/additionalDecorator/AbstractAddFuncDecorator.java
+23
-6
src/main/java/com/study/design/pay/additionalDecorator/AddFuncDecorator.java
...tudy/design/pay/additionalDecorator/AddFuncDecorator.java
+9
-2
src/main/java/com/study/design/pay/factory/AddFuncFactory.java
...ain/java/com/study/design/pay/factory/AddFuncFactory.java
+7
-6
未找到文件。
src/main/java/com/study/design/pay/additionalDecorator/AbstractAddFuncDecorator.java
浏览文件 @
65929cf3
...
@@ -3,22 +3,39 @@ package com.study.design.pay.additionalDecorator;
...
@@ -3,22 +3,39 @@ package com.study.design.pay.additionalDecorator;
import
com.study.design.pay.pojo.PayBody
;
import
com.study.design.pay.pojo.PayBody
;
import
com.study.design.pay.strategyContext.AbstractPayContext
;
import
com.study.design.pay.strategyContext.AbstractPayContext
;
/**
* 装饰器抽象类
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/30 09:24
*/
public
abstract
class
AbstractAddFuncDecorator
extends
AbstractPayContext
{
public
abstract
class
AbstractAddFuncDecorator
extends
AbstractPayContext
{
// 这是我们的装饰器类。专门干装修的。 专门添加新功能的(平台币,红包)
/**
// 装饰的是谁啊? 我作为一个称职的装饰器,我必须得知道装饰的是谁,不然我咋干活儿啊。
* 这是我们的装饰器类。专门干装修的。 专门添加新功能的(平台币,红包)
* 装饰的是谁啊? 我作为一个称职的装饰器,我必须得知道装饰的是谁,不然我咋干活儿啊。
*/
private
AbstractPayContext
abstractPayContext
=
null
;
private
AbstractPayContext
abstractPayContext
=
null
;
public
AbstractAddFuncDecorator
(
AbstractPayContext
abstractPayContext
)
{
public
AbstractAddFuncDecorator
(
AbstractPayContext
abstractPayContext
)
{
this
.
abstractPayContext
=
abstractPayContext
;
this
.
abstractPayContext
=
abstractPayContext
;
}
}
// 开始干活儿
/**
//1. 老活儿。 支付。但是我又不能修改支付代码,也不能修改支付逻辑。
* 老活儿。 支付。但是我又不能修改支付代码,也不能修改支付逻辑。
*
* @param payBody
* @return
*/
@Override
@Override
public
Boolean
execute
(
PayBody
payBody
)
{
public
Boolean
execute
(
PayBody
payBody
)
{
return
abstractPayContext
.
execute
(
payBody
);
return
abstractPayContext
.
execute
(
payBody
);
}
}
//2. 老活儿不合适,没你装饰器照样能execute。 新活儿:平台币,红包)
/**
* 新活儿:平台币,红包
*
* @param payBody
*/
public
abstract
void
additionalFunction
(
PayBody
payBody
);
public
abstract
void
additionalFunction
(
PayBody
payBody
);
}
}
\ No newline at end of file
src/main/java/com/study/design/pay/additionalDecorator/AddFuncDecorator.java
浏览文件 @
65929cf3
...
@@ -5,19 +5,20 @@ import com.study.design.pay.strategyContext.AbstractPayContext;
...
@@ -5,19 +5,20 @@ import com.study.design.pay.strategyContext.AbstractPayContext;
/**
/**
* abstractPayContext 不是共享的
,因为有的小伙伴选择 zfb 支付,有的小伙伴选择wx支付,等等。。。
* abstractPayContext 不是共享的
*
*
* @author : qinyingjie
* @author : qinyingjie
* @version : 2.2.0
* @version : 2.2.0
* @date : 2022/9/27 02:20
* @date : 2022/9/27 02:20
*/
*/
public
class
AddFuncDecorator
extends
AbstractAddFuncDecorator
{
public
class
AddFuncDecorator
extends
AbstractAddFuncDecorator
{
public
AddFuncDecorator
(
AbstractPayContext
abstractPayContext
)
{
public
AddFuncDecorator
(
AbstractPayContext
abstractPayContext
)
{
super
(
abstractPayContext
);
super
(
abstractPayContext
);
}
}
/**
/**
* 新活儿
*
复写方法:
新活儿
*
*
* @param payBody
* @param payBody
*/
*/
...
@@ -30,6 +31,12 @@ public class AddFuncDecorator extends AbstractAddFuncDecorator {
...
@@ -30,6 +31,12 @@ public class AddFuncDecorator extends AbstractAddFuncDecorator {
System
.
out
.
println
(
"更新平台币成功,发送红包到用户优惠券模块成功。"
);
System
.
out
.
println
(
"更新平台币成功,发送红包到用户优惠券模块成功。"
);
}
}
/**
* 老活 新活 一起执行
*
* @param payBody
* @return
*/
@Override
@Override
public
Boolean
execute
(
PayBody
payBody
)
{
// 算共享的。共享的调用逻辑
public
Boolean
execute
(
PayBody
payBody
)
{
// 算共享的。共享的调用逻辑
Boolean
result
=
super
.
execute
(
payBody
);
//老活儿
Boolean
result
=
super
.
execute
(
payBody
);
//老活儿
...
...
src/main/java/com/study/design/pay/factory/AddFuncFactory.java
浏览文件 @
65929cf3
...
@@ -7,18 +7,19 @@ import com.study.design.pay.strategyContext.PayContext;
...
@@ -7,18 +7,19 @@ import com.study.design.pay.strategyContext.PayContext;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
/**
* 工厂类
*
享元
工厂类
*
*
* @author : qinyingjie
* @author : qinyingjie
* @version : 2.2.0
* @version : 2.2.0
* @date : 2023/7/29 09:11
* @date : 2023/7/29 09:11
*/
*/
public
class
AddFuncFactory
{
public
class
AddFuncFactory
{
// 工厂的目的是生产 AddFuncDecorator; 生产几个啊? 多个:享元
/**
// key 应该是能够和 AbstractAddFuncDecorator 做成对应的东西。
* 工厂的目的是生产 AddFuncDecorator; 生产几个啊? 多个:享元
// 这个map最多保存是三个对象。
* key 应该是能够和 AbstractAddFuncDecorator 做成对应的东西。
* 这个map最多保存是三个对象。
*/
public
final
static
Map
<
PayContext
,
AbstractAddFuncDecorator
>
maps
=
new
ConcurrentHashMap
<>();
public
final
static
Map
<
PayContext
,
AbstractAddFuncDecorator
>
maps
=
new
ConcurrentHashMap
<>();
public
static
AbstractAddFuncDecorator
getAddFunc
(
PayContext
payContext
)
{
public
static
AbstractAddFuncDecorator
getAddFunc
(
PayContext
payContext
)
{
...
@@ -28,4 +29,4 @@ public class AddFuncFactory {
...
@@ -28,4 +29,4 @@ public class AddFuncFactory {
}
}
return
maps
.
get
(
payContext
);
return
maps
.
get
(
payContext
);
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录