一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(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. Web开发中的6个坏习惯

    在 Usersnap,我们在能很好的组织网站开发有超过20(总和)年的经验.我们认为这些过去的经验能让我们很好的分辨出什么是好.坏和丑陋的网站开发.如今我们不想把注意力放在消极的部分,但就这一次,我们 ...

  2. webapp开发基础

    1.首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用   <meta content="width=device-wid ...

  3. .NET-使用NPOI组件将数据导出Excel-通用方法

    一.Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题:导出问题: 如果是asp.net,你 ...

  4. 清除linux系统的多余引导

    由于我把系统给升级(update)了,在grub引导模式出现新旧版本(Grub与Grub2)的引导系统分别为正常启动和进入恢复模式各2个引导项,如下图显示:百度找不到相关或类似的教程,只好半夜起来研究 ...

  5. SQL Server 之 与 OVER() 函数

    在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数. 一. OVER() 函数 语法结构:OVER( [ PARTITION BY ... ] [ ORDER BY ... ...

  6. Oracle DB 复制数据库

    • 列出创建副本数据库的目的 • 选择用于复制数据库的方法 • 使用RMAN 复制数据库 • 使用RMAN 备份复制数据库 • 基于正在运行的实例复制数据库 使用副本数据库 • 使用副本数据库可执行以 ...

  7. Python 遍历set

    遍历set 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现. 直接使用 for 循环可以遍历 set 的元素: weekdays = set([' ...

  8. 解决ssh登录Host key verification failed

    使用SSH登录某台机器,有时因为server端的一些变动,会出现以下信息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: R ...

  9. postgresql一般crud存储过程参考[转]

    http://blog.csdn.net/cdnight/article/details/18082255 这里是一份经过再三调试测试而成功的postgres数据库单表crud存储过程,请注意,对于多 ...

  10. IntelliJ IDEA类头注释和方法注释

    The template is editable. Along with static text, code and comments, you can also use predefined var ...