一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(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. _vsnprintf在可变参数打印中的用法

    _vsnprintf,C语言库函数之一,属于可变参数.用于向字符串中打印数据.数据格式用户自定义. 函数简介 编辑 头文件: #include <stdarg.h> 函数声明: int _ ...

  2. 如何查看ESXi的网卡的MAC地址?

    直接上图 图一, 物理网卡   图二, vmkernel虚拟网卡   参考资料 ============================ How To Determine Vmkernel Inter ...

  3. 使用YUI+Ant 实现JS CSS压缩

    今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...

  4. 高性能CSS

    避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...

  5. win10 修改cmd终端编码格式为utf8

    最近在使用ssh 连接服务器时,好多中文显示为乱码,查明原因,是因为自己cmd终端编码给是为gbk,而服务器编码格式为utf8,所以需要修改cmd终端编码格式为utf8,但是网上看到好多解决方案是 1 ...

  6. linux sendmail 邮件服务器架设

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

  7. idea maven 报-source 1.5 中不支持 diamond 运算符

    需要修改 project setting 中的

  8. FrameWork数据权限浅析1之基于手工修改模型实现行级数据安全

    1:环境 Cognos10.2.0,Oracle 2:实现过程 在设置Framework数据级别权限的时候,通常用到的就是在FM的设置数据安全的地方添加安全过滤器,如下图 step1:选中部门维度表→ ...

  9. 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?

    这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { pub ...

  10. python 网络请求类库 requests 使用

    python 网络请求类库 requests 使用 requests是 为python封装的强大 REST 操作类库 githubhttps://github.com/kennethreitz/req ...