一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(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. 9个实用的Javascript代码高亮脚本

    代码高亮很有用,特别是在需要在网站或者blog中显示自己编写的代码的时候,或者给其他人查看或调试语法错误的时候.我们可以将代码高亮,以便阅读者可以十分方便的读取代码块,增加用户阅读代码的良好体验. 目 ...

  2. 谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍

    这次分享的是Chrome开发工具中最有用的面板Sources. Sources面板几乎是我最常用到的Chrome功能面板,也是在我看来决解一般问题的主要功能面板.通常只要是开发遇到了js报错或者其他代 ...

  3. linux sendmail 邮件服务器架设

    大家都知道架邮件服务器首先要架DNS服务.架设sendmail邮件服务器,以供大家一起学习探讨. 步骤一, 安装SNEDMAIL服务,查看你是否有安装SENDMAIL. #rpm -qa|grep b ...

  4. 通过Intel XDK编写跨平台app(二)

    通过Intel XDK编写跨平台app(一) 通过Intel XDK编写跨平台app(二) 在这个系列的上一篇文章中,我们大致了解了Interl XDK的概况.在这一部分中,我们会详细地介绍如何通过这 ...

  5. 搭建ssm+maven环境遇到的问题

    1. @RunWith(SpringJUnit4ClassRunner.class) gives error 在使用junit测试过程中 2.com.google.gson.JsonIOExcepti ...

  6. android路径获取

    //内部路径 Environment.getDataDirectory()=/data Environment.getDownloadCacheDirectory()=/cache Environme ...

  7. Map 和 WeakMap 数据结构

    Map 和 WeakMap 是ES6 新增的数据结构 一.Map 它们本质与对象一样,都是键值对的集合,但是他们与 Object 对象主要的不同是,键可以是各种类型的数值,而Object 对象的键 只 ...

  8. Orcla 数据库复习2 --子查询和表连接

    子查询和表连接  ①.查询挣钱最多的人的名字  SELECT ename,sal FROM emp  WHERE sal=(SELECT MAX(sal) FROM emp);  ②.查询有哪些人的工 ...

  9. TCP 中出现RST的情况

    http://www.360doc.com/content/13/0702/10/1073512_297069771.shtml 原 几种TCP连接中出现RST的情况 发表于1年前(2013-05-0 ...

  10. 基于olami开放语义平台的微信小程序遥知之源码实现

    概述 实现一个智能生活信息查询的小秘书功能,支持查天气.新闻.日历.汇率.笑话.故事.百科.诗词.邮编.区号.菜谱.股票.节目预告,还支持闲聊.算24点.数学计算.单位换算.购物.搜索等功能. 使用方 ...