Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
apachecn-java-zh
提交
c0c41ced
A
apachecn-java-zh
项目概览
OpenDocCN
/
apachecn-java-zh
11 个月 前同步成功
通知
5
Star
53
Fork
13
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-java-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c0c41ced
编写于
4月 13, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-04-13 21:15:49
上级
1dc97a92
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
25 deletion
+25
-25
new/design-pattern-best-prac-java/4.md
new/design-pattern-best-prac-java/4.md
+25
-25
未找到文件。
new/design-pattern-best-prac-java/4.md
浏览文件 @
c0c41ced
...
...
@@ -274,9 +274,9 @@ publicclass Main
我们可以在实现图中区分以下参与者:
*
**主题**
:客户端使用的现有接口
*
**RealSubject**
:真实对象的类
*
**ProxySubject**
:代理类
*
`Subject``
:客户端使用的现有接口
*
`
RealSubject
`
:真实对象的类
*
`
ProxySubject
`
:代理类
# 示例
...
...
@@ -406,10 +406,10 @@ JScrollPane scrollPane2 = new JScrollPane(scrollPane1);
我们可以在实现图中区分以下参与者:
*
**组件**
:抽象组件(可以是接口)
*
**组件实现**
:这是我们要装饰的组件之一
*
**Decorator**
:这是一个抽象的组件 Decorator
*
**ExtendedComponent**
:这是添加额外功能的组件装饰器
*
`
Component
`
:抽象组件(可以是接口)
*
`
ComponentImplementation
`
:这是我们要装饰的组件之一
*
`
Decorator
`
:这是一个抽象的组件 Decorator
*
`
ExtendedComponent
`
:这是添加额外功能的组件装饰器
# 示例
...
...
@@ -488,10 +488,10 @@ class PrintTextHexDecorator implements PrintText
我们可以在实现图中区分以下参与者:
*
**抽象**
:这是抽象组件
*
**实现**
:这是抽象实现
*
**精制**
:精制成分
*
**具体实施**
:这是具体实施
*
`
Abstraction
`
:这是抽象组件
*
`
Implementation
`
:这是抽象实现
*
`
Refined
`
:精制成分
*
`
SpecificImplementation
`
:这是具体实施
# 示例
...
...
@@ -590,10 +590,10 @@ Composite 使用递归组合,其中客户端代码以相同的方式处理每
我们可以在实现图中区分以下参与者:
*
**客户**
:客户代码
*
**组件**
:抽象节点
*
**叶**
:叶节点
*
**复合**
:具有子节点的复合节点,子节点可以是复合节点,也可以是叶节点
*
`
Client
`
:客户代码
*
`
Component
`
:抽象节点
*
`
Leaf
`
:叶节点
*
`
Composite
`
:具有子节点的复合节点,子节点可以是复合节点,也可以是叶节点
# 示例
...
...
@@ -613,7 +613,7 @@ publicclass Main
}
```
客户端代码创建一个
*(1+4)-2*
算术表达式并打印其值,如下代码所示:
客户端代码创建一个
`
(1 + 4) - 2
`
算术表达式并打印其值,如下代码所示:
```java
interface ArithmeticComposite
...
...
@@ -676,7 +676,7 @@ class MinusOperand extends ArithmeticOperand
`
PlusOperand
`和`
MinusOperand
`是当前支持的算术类型。他们知道如何表示加号(+)和减号(-)的算术表达式。
如预期,
*(1+4)-2*
算术表达式返回 3,并将值打印到控制台,如下图所示:
如预期,
`
(1 + 4) - 2
`
算术表达式返回 3,并将值打印到控制台,如下图所示:
![](img/f2cdc200-c021-41d4-af7c-9c654e878838.png)
...
...
@@ -698,9 +698,9 @@ façade 模式需要采用内部子系统接口(多个接口)到客户机代
我们可以在实现图中区分以下参与者:
*
**客户端**
:子系统客户端代码
*
**立面**
:子系统接口
*
**子系统**
:子系统中定义的类
*
`
Client
`
:子系统客户端代码
*
`
Facade
`
:子系统接口
*
`
SubSystem
`
:子系统中定义的类
# 示例
...
...
@@ -832,11 +832,11 @@ flyweight 和 façade 的区别在于前者知道如何制作许多小对象,
我们可以在实现图中区分以下参与者:
*
**客户**
:客户代码。
*
**FlyweightFactory**
:如果 flyweights 不存在,则创建 flyweights;如果 flyweights 存在,则从池中返回 flyweights。
*
**飞锤**
:抽象飞锤。
*
**ConcreateShareableFlyweight**
:设计为与对等方共享状态的 flyweight。
*
**ConcreateUnshareableFlyweight**
:不共享其状态的 flyweight。它可以由多个混凝土飞锤组成,例如,一个由三维立方体和球体组成的结构。
*
`
Client
`
:客户代码。
*
`
FlyweightFactory
`
:如果 flyweights 不存在,则创建 flyweights;如果 flyweights 存在,则从池中返回 flyweights。
*
`
Flyweight
`
:抽象飞锤。
*
`
ConcreateShareableFlyweight
`
:设计为与对等方共享状态的 flyweight。
*
`
ConcreateUnshareableFlyweight
`
:不共享其状态的 flyweight。它可以由多个混凝土飞锤组成,例如,一个由三维立方体和球体组成的结构。
# 示例
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录