auto commit
This commit is contained in:
63
notes/设计模式 - 原型模式.md
Normal file
63
notes/设计模式 - 原型模式.md
Normal file
@ -0,0 +1,63 @@
|
||||
## 6. 原型模式(Prototype)
|
||||
|
||||
### Intent
|
||||
|
||||
使用原型实例指定要创建对象的类型,通过复制这个原型来创建新对象。
|
||||
|
||||
### Class Diagram
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/b8922f8c-95e6-4187-be85-572a509afb71.png"/> </div><br>
|
||||
|
||||
### Implementation
|
||||
|
||||
```java
|
||||
public abstract class Prototype {
|
||||
abstract Prototype myClone();
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
public class ConcretePrototype extends Prototype {
|
||||
|
||||
private String filed;
|
||||
|
||||
public ConcretePrototype(String filed) {
|
||||
this.filed = filed;
|
||||
}
|
||||
|
||||
@Override
|
||||
Prototype myClone() {
|
||||
return new ConcretePrototype(filed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return filed;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
public class Client {
|
||||
public static void main(String[] args) {
|
||||
Prototype prototype = new ConcretePrototype("abc");
|
||||
Prototype clone = prototype.myClone();
|
||||
System.out.println(clone.toString());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```html
|
||||
abc
|
||||
```
|
||||
|
||||
### JDK
|
||||
|
||||
- [java.lang.Object#clone()](http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone%28%29)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>
|
Reference in New Issue
Block a user