一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(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. 移植tslib和Qt5.6到三星s5pv210开发板

    tslib1.4移植 下载tslib1.4后 1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.cd ...

  2. WebUploader文件图片上传插件的使用

    最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...

  3. 【canvas】四角光阑

    代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...

  4. xcode_6_beta.dmg

    http://pan.baidu.com/s/1qW2lWoW password:5nty

  5. vue - 使用axios

    1. 先安装axios 1.1 npm安装:npm i -D axios 1.2 yarn 安装:yarn add axios --dev 2. 配置main.js,在src目录下. 3. 使用

  6. 解决tmux在PuTTY下工作异常的问题

    ubuntu 默认系统配置文件位置/usr/share/byobu/profiles/tmux 来自 PC通过PuTTY连接到VPS,在使用VPS上安装的tmux时遇到了一些小问题.主要是因为PuTT ...

  7. iDempiere VS World

    怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ 第四篇 iDempiere VS World 接下来就接着第一篇,再说一说iDempei ...

  8. mysql数据库创建删除带横杠的数据库名

    mysql> create database d-d; ERROR 1064 (42000): You have an error in your SQL syntax; check the m ...

  9. oracle创建用户及赋权

    1,创建表空间 create tablespace hxzg_data logging datafile 'C:\app\data\hxzg_data.dbf' size 50m autoextend ...

  10. git eclipse 不标记修改后的文件(没有图标标明)

    在使用Eclipse做开发的时候,已经修改了某个文件,但是文件的图标没有明显的标示,如图: 解决上面问题的办法如下: