-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjava-design.html
More file actions
39 lines (33 loc) · 6.88 KB
/
Copy pathjava-design.html
File metadata and controls
39 lines (33 loc) · 6.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF" data-link-color="#307FFF" data-link-dark-color="#90C695" data-content-max-width="1350" data-resizable-sidebar="true" data-sidebar-width="300"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="built-on" content="2026-06-30T14:11:33.497209265"><link rel="canonical" href="https://blog.kubectl.org/java-design.html" data-react-helmet="true"><title>Design Analysis | Mind and Hand</title><script type="application/json" id="virtual-toc-data">[{"id":"z8tpacn_5","level":0,"title":"结构理解","anchor":"#z8tpacn_5"},{"id":"interface-extends-interface","level":1,"title":"interface extends interface","anchor":"#interface-extends-interface"},{"id":"class-abstract-class-interface","level":1,"title":"class abstract_class interface","anchor":"#class-abstract-class-interface"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.27.0-b1156/app.css" rel="stylesheet"><link href="static/custom.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Design Analysis | Mind and Hand"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Mind and Hand Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="https://blog.kubectl.org/java-design.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Design Analysis | Mind and Hand"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "https://blog.kubectl.org/java-design.html#webpage",
"url": "https://blog.kubectl.org/java-design.html",
"name": "Design Analysis | Mind and Hand",
"description": "",
"image": "",
"inLanguage":"en-US"
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
"@type": "WebSite",
"@id": "https://blog.kubectl.org/#website",
"url": "https://blog.kubectl.org/",
"name": "Mind and Hand Help"
}</script><!-- End Schema.org --></head><body data-id="java-design" data-main-title="Design Analysis" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="develop.md|Develop///lang-java.md|Java"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Mind and Hand Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="java-design" id="java-design.md">Design Analysis</h1><aside class="prompt" data-type="tip" data-title="" id="z8tpacn_4"><p id="z8tpacn_6">Java的框架设计</p></aside><section class="chapter"><h2 id="z8tpacn_5" data-toc="z8tpacn_5">结构理解</h2><section class="chapter"><h3 id="interface-extends-interface" data-toc="interface-extends-interface">interface extends interface</h3><p id="z8tpacn_9"><code class="code" id="z8tpacn_12">interface B extends interface A</code>:</p><ul class="list _bullet" id="z8tpacn_10"><li class="list__item" id="z8tpacn_13"><p id="z8tpacn_15">对原有接口 <code class="code" id="z8tpacn_16">A</code> 能力的扩展</p></li><li class="list__item" id="z8tpacn_14"><p id="z8tpacn_17">接口<code class="code" id="z8tpacn_19">B</code>有实现类, 在接口 <code class="code" id="z8tpacn_20">A</code>的实现类中</p><ul class="list _bullet" id="z8tpacn_18"><li class="list__item" id="z8tpacn_21"><p id="z8tpacn_23">一般会看到 <code class="code" id="z8tpacn_24">A</code> 接口的引用</p></li><li class="list__item" id="z8tpacn_22"><p id="z8tpacn_25">目的是保留 <code class="code" id="z8tpacn_26">A</code> 本身的能力</p></li></ul></li></ul><div class="code-block" data-lang="java">
interface A {
void doSomething();
}
/* some class implementation A */
interface B extends A {
void doSomethingElse();
}
class X implements B {
private A a;
public void a() {
a.doSomething();
}
public void doSomethingElse() {
// do something
}
}
</div></section><section class="chapter"><h3 id="class-abstract-class-interface" data-toc="class-abstract-class-interface">class abstract_class interface</h3><p id="z8tpacn_27"><code class="code" id="z8tpacn_32">interface</code>: 负责定义完整的行为</p><p id="z8tpacn_28"><code class="code" id="z8tpacn_33">abstract_class implementation interface</code></p><ul class="list _bullet" id="z8tpacn_29"><li class="list__item" id="z8tpacn_34"><p id="z8tpacn_37">通用能力的实现</p></li><li class="list__item" id="z8tpacn_35"><p id="z8tpacn_38">方法之间通用逻辑的耦合</p></li><li class="list__item" id="z8tpacn_36"><p id="z8tpacn_39">定义出钩子</p></li></ul><p id="z8tpacn_30"><code class="code" id="z8tpacn_40">class extends abstract_class</code></p><ul class="list _bullet" id="z8tpacn_31"><li class="list__item" id="z8tpacn_41"><p id="z8tpacn_43">考虑是对接口方法的实现</p></li><li class="list__item" id="z8tpacn_42"><p id="z8tpacn_44">还是对钩子方法的实现</p></li></ul></section></section><div class="last-modified">30 June 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="dsl.html" class="navigation-links__prev">DSL</a><a href="jdbc.html" class="navigation-links__next">JDBC</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.27.0-b1156/app.js"></script></body></html>