一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(1)定义一个类,它的构造方法是私有的,有一个私有的静态的该类的变量在初始化的时候就实例化,通过一个公有的静态的方法获取该对象。
Java代码 
1. //单例模式的第一种形式    
2. public class Singleton01 {    
3.    
4.     // 私有的静态属性    
5.     private static Singleton01 instance = new Singleton01();    
6.    
7.     // 私有的构造方法    
8.     private Singleton01() {    
9.     }    
10.    
11.     // 公有的静态方法    
12.     public static Singleton01 getInstance() {    
13.         return instance;    
14.     }    
15. }  
(2)改进后的
Java代码 
1. public class Singleton02 {    
2.    
3.     // 私有的静态的类变量    
4.     private static Singleton02 instance = null;    
5.    
6.     // 私有的构造方法    
7.     private Singleton02() {    
8.     }    
9.    
10.     // 静态的公有的方法    
11.     public static Singleton02 getInstance() {    
12.         if (instance == null) {    
13.             instance = new Singleton02();    
14.         }    
15.         return instance;    
16.     }    
17. }

二、工厂模式:生产不同对象的公共接口
(1)   产品接口
Java代码 
1. //产品接口    
2. public interface Product {    
3.    
4. }  
(2)产品接口的实现类
Java代码 
1. //洗衣机    
2. public class Washer implements Product {    
3.    
4.     public Washer(){    
5.         System.out.println("洗衣机被制造了!");    
6.     }    
7. }  
Java代码 
1. //空调    
2. public class AirCondition implements Product {    
3.    
4.     public AirCondition(){    
5.         System.out.println("空调被制造!");    
6.     }    
7. }  
(3)工厂接口
Java代码 
1. //工厂接口    
2. public interface Factory {    
3.    
4.     //生产产品    
5.   Product produce(String productName);    
6.             
7. }  
(4)工厂的实现类
Java代码 
1. //实现工厂    
2. public class TestFactory implements Factory {    
3.    
4.     //生产产品    
5.     public Product produce(String productName) {    
6.         if (productName.equals("Washer")) {    
7.             return new Washer();    
8.         }    
9.         if (productName.equals("AirCondition")) {    
10.             return new AirCondition();    
11.         }    
12.         return null;    
13.     }    
14.    
15.     public static void main(String[] args) {    
16.         TestFactory testFactory = new TestFactory();    
17.         testFactory.produce("Washer");    
18.         testFactory.produce("AirCondition");    
19.     }    
20. }

java:常用的两种设计模式(单例模式和工厂模式)的更多相关文章

  1. Java常用的几种设计模式

    本来想写点spring相关的东西的,想来想去,先写点设计模式的东西吧 什么是设计模式?套用百度百科的话解释吧 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设 ...

  2. java23种设计模式——三、工厂模式

    源码在我的github和gitee中获取 工厂模式 工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在J ...

  3. PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式

    1.单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例.即一个类只有一个对象实例. 要实现每一个类只有一个实例,就需 ...

  4. 【Unity与23种设计模式】抽象工厂模式(Abstract Factory)

    GoF中定义: "提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类." 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例 ...

  5. 两种设计模式(1)==>>“简单工厂”

    我们以做一个计算器为例,给大家介绍简单工厂的应用: 效果: 这里我们使用 继承 ,虚方法, 简单工厂的设计模式来完成 首先,我们除了搭好窗体外,我们应该把我们的一些类准备好: 1.计算的父类Calcu ...

  6. 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...

  7. Spring主要用到两种设计模式

    Spring主要用到两种设计模式 1.工厂模式 Spring容器就是实例化和管理全部Bean的工厂. 工厂模式可以将Java对象的调用者从被调用者的实现逻辑中分离出来. 调用者只关心被调用者必须满足的 ...

  8. java23种设计模式——四、原型模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  9. java23种设计模式——五、建造者模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

随机推荐

  1. 自定义控件 淘宝头条【ViewFlipper】

    简易版 代码 ); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Acti ...

  2. CarbonData编译与安装

    原文连接 http://xiguada.org/carbondata_compile/ CarbonData是啥? CarbonData is a fully indexed columnar and ...

  3. [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数

    函数指针-指针函数 函数指针的重点是指针.表示的是一个指针,它指向的是一个函数.eg: int (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.eg: int* fun() ...

  4. x-pack 功能介绍及配置传输层安全性(TLS / SSL)

    x-pack 功能介绍及配置传输层安全性(TLS / SSL) 学习了:https://blog.csdn.net/wfs1994/article/details/80411047

  5. Transformer中引用iqd作为数据源导入报错TR1907与TR3312

    好久没和transform接触了,初次接触就给我送了个大礼,在选择好iqd文件执行最后一步导入的时候,要求我对数据源输入用户名密码,我连续输入了三次用户名和密码,在我十分肯定用户名和密码没错的情况下, ...

  6. 理解 select poll epoll

    举例说明:老师收学生作业,相当于应用层调用I/O操作. 1.老师逐个收学生作业,学生没有做完,只能阻塞等待,收了之后,再去收下一个学生的作业.这显然存在性能问题. 2.怎么解决上面的问题? 老师找个班 ...

  7. UNIX网络编程读书笔记:地址操纵函数

    地址格式转换函数:它们在ASCII字符串(人们比较喜欢用的格式)与网络字节序的二进制值(此值存于套接口地址结构中)间转换地址. 1.inet_aton.inet_addr.inet_ntoa inet ...

  8. Windows Store GIF player 诞生记

    在Win8上面,Image source切换的时候有bug.当我们短时间定时切换的时候,Image不能正常地显示对应的图片.Image控件又不支持GIF播放,所以GIF图片的播放就是一个非常头痛的问题 ...

  9. 用Drupal快速实现mobile平台服务端【转】

    原文地址:http://www.terrysco.com/node/drupal-as-mobile-backend.html 用Drupal很容易实现一个API,让手机平台或者其他系统使用json的 ...

  10. Android中涉及到的焦点问题,focusable,clickable,enabled

    先摘抄下stackoverflow上一个启示了我的回答: try by Changing your code as: private OnClickListener saveButtonListene ...