创建型模式特立独行的两位大侠
既是大侠,本事当然了得。还记得拔一撮猴毛,吹出万千小猴子,这就是我们第一位大侠(原型模式)的本事。另一位,虽有真假猴王让人分辨不清,当真的永远都是真的,这就是单例模式。
原型模式
1.复制一个(不是新建)已经存在的实例(继承Clone)来返回新的实例;
2.多用于创建复制或者耗时的实例,此时比从头创建更高效。
UML:
原型:
1: public class Prototype implements Cloneable {
2: ...
3: ...
4: public Object clone(){
5: try {
6: return super.clone();
7: } catch (Exception e) {
8: e.printStackTrace();
9: return null;
10: }
11: }
12: }
代码:
1: public static void main(String[] args) {
2: Prototype prototype=new ConcretePrototype("prototype");
3: Prototype prototype2=(Prototype)prototype.clone();
4: System.out.println(prototype.getName());
5: System.out.println(prototype2.getName());
6:
7: // prototype
8: // prototype
9: }
单例模式
保证一个类仅有一个实例,并提供一个访问他的全局变量
单例:
1: public class Singleton {
2: /**
3: * 静态的自身变量
4: */
5: private static Singleton singleton;
6:
7: /**
8: * 构造函数私有化,防止外界直接创建
9: */
10: private Singleton(){
11:
12: }
13:
14: public static Singleton getSingleton(){
15: if (singleton==null) {
16: singleton=new Singleton();
17: }
18: return singleton;
19: }
20: }
代码:
1: public static void main(String[] args) {
2: Singleton singleton=Singleton.getSingleton();
3: Singleton singleton2=Singleton.getSingleton();
4:
5: System.out.println(singleton);
6: System.out.println(singleton2);
7: // Singleton.Singleton@9e5c73
8: // Singleton.Singleton@9e5c73
9: }
作者:但,我知道
出处:http://www.cnblogs.com/haichao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架