JAVA设计模式之单例模式

import java.util.HashMap;
import java.util.Map; /**
* 设计模式之单例模式
* 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
* 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,
* 不需要实例化该类的对象。
*
* 1.单例模式只能有一个实例
* 2.单例必须自己创建自己的唯一实例
* 3.单例必须给其他所有对象提供这一实例
*
* 主要解决:一个全局使用的类频繁地创建与销毁。
*
* 何时使用:当您想控制实例数目,节省系统资源的时候。
*
* @author dyq
*
*/
public class DesignPatternSingleton {
public static void main(String[] args) {
SlackerSingletonObject slackerSingletonObject = SlackerSingletonObject.getInstance();
HungrySingletonObject hungrySingletonObject = HungrySingletonObject.getInstance();
EnumSingletonObject enumSingletonObject = EnumSingletonObject.INSTANCE;
}
}
/**
* 懒汉模式-单例模式
* @author dyq
*
*/
class SlackerSingletonObject{
private static SlackerSingletonObject instance;
private SlackerSingletonObject() {
System.out.println("加载SlackerSingletonObject");
}
public static synchronized SlackerSingletonObject getInstance() {
if(instance==null) {
instance = new SlackerSingletonObject();
}
return instance;
}
public static Map<String,Object> getProFile(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("jdbcDriver", "oracle");
return map;
}
}
/**
* 饿汉模式-单例模式
*/
class HungrySingletonObject{
private static HungrySingletonObject instance = new HungrySingletonObject();
private String name ;
private HungrySingletonObject() {
System.out.println("加载HungrySingletonObject");
}
public static HungrySingletonObject getInstance() {
return instance;
}
public static Map<String,Object> getProFile(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("jdbcDriver", "oracle");
return map;
}
} /**
* 枚举--单例模式
*/
enum EnumSingletonObject{
INSTANCE;
public static Map<String,Object> getProFile(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("jdbcDriver", "oracle");
return map;
}
}

JAVA设计模式之工厂模式

/**
* 设计模式之工厂模式
* 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
* 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
*
* 主要解决:主要解决接口选择的问题。
* 何时使用:我们明确地计划不同条件下创建不同实例时。
* 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。
* 关键代码:创建过程在其子类执行。
* @author dyq
*
*/
public class DesignPatternFactory {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory(); //获取 Circle 的对象,并调用它的 draw 方法
Shape shape1 = shapeFactory.getShape("CIRCLE"); //调用 Circle 的 draw 方法
shape1.draw(); //获取 Rectangle 的对象,并调用它的 draw 方法
Shape shape2 = shapeFactory.getShape("RECTANGLE"); //调用 Rectangle 的 draw 方法
shape2.draw(); //获取 Square 的对象,并调用它的 draw 方法
Shape shape3 = shapeFactory.getShape("SQUARE"); //调用 Square 的 draw 方法
shape3.draw();
}
} interface Shape{
public void draw();
} class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
} }
class Circle implements Shape{
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
class ShapeFactory {
public Shape getShape(String shapeType) {
if(shapeType==null) {
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
}else if(shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
}else {
return new Square();
}
}
}

JAVA常用设计模式(一、单例模式、工厂模式)的更多相关文章

  1. java常用设计模式二:工厂模式

    1.简单工厂模式(静态工厂方法模式) 抽象实例: public interface People { void talk(); } 具体实例: public class Doctor implemen ...

  2. 《java常用设计模式之----单例模式》

    一.简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...

  3. java常用设计模式五:建造者模式

    1.定义 是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象. 产品类:一般是一个较为复杂的对象,也就是说创建对象的 ...

  4. JAVA基础——设计模式之简单工厂模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...

  5. PHP设计模式之 单例模式 工厂模式 实例讲解

    单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为priva ...

  6. java常用设计模式九:桥接模式

    一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式.比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2:第二个维度有另一个接口B和对应的子类B1和B2 ...

  7. java常用设计模式八:代理模式

    一.概述 代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 其特征是代理类与委托类有同样的接口,真正的核心业务逻辑还是在实际对象里面. 二.为什么要使用代理模式 当 ...

  8. java常用设计模式三:原型模式

    在说原型模式之前先说一下浅拷贝和深拷贝的概念 一.浅拷贝和深拷贝 1.浅拷贝 在java中,对象创建后需要有一个引用变量来指向该对象实际的地址空间,也就是说引用变量与对象实体是两个不同的数据体.在Ob ...

  9. java常用设计模式十一:策略模式

    一.概述 定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(概念不好理解,可以看第二节的合例子) 基本角色: 环境( ...

  10. java常用设计模式十:模板模式

    一.定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 如果上面的话不好理解,请看下面的例子 二.示例 1)定义一个模 ...

随机推荐

  1. VMware安装步骤既常见问题

    一.vmware出问题? 可以使用vmvare的修复功能. 二.创建虚拟机 1)第一步:选择自定义下一步,典型里是都设定好了的. 2)第二步:选择12默认下一步 3)第三步:可以从光驱中安装,可以从文 ...

  2. File 与 FileStream 文件运用

    using System.IO; using System.Text; using UnityEngine; /// <summary> /// File 一次性控制 (小文件) /// ...

  3. 详解java中的byte类型

    Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于j ...

  4. cmd 查看端口

    windows + R 调出cmd窗口 输入 netstat -nao 查看端口使用情况 输入netstat -nao | findstr 80查找指定端口 杀死指定端口的进程taskkill /pi ...

  5. leecode第一百五十五题(最小栈)

    class MinStack { public: stack<int> cur_stack; stack<int> cur_min;//用来存储最小值的栈 int min_nu ...

  6. openssh升级,打补丁

    以Root用户上传升级包至/home/dou/system openssh-7.5p1.tar.gz openssl-1.0.2l.tar.gz zlib-1.2.11.tar.gz l  安装所需包 ...

  7. vue render里面的nativeOn

    vue render里面的nativeOn的解释官方的解释是:// 仅对于组件,用于监听原生事件,而不是组件内部使用 `vm.$emit` 触发的事件. 官方的解释比较抽象 个人理解: 父组件要在子组 ...

  8. EL条件判断用法<c:choose>

    EL表达式一般不直接用==,!=,>,<,>=,<=之类的表示相等.不等于.大于.小于.大于等于以及小于等于,而是使用字母表示,如下: ==     eq   等于 !=   ...

  9. mysql以zip安装,解决the service already exists

    mysql以zip安装, mysqld -install 报错:​The service already exists ​ 原因是之前安装了以后卸载了,服务没删掉. 解决方法:​ sc query m ...

  10. 若依项目分模块集成uflo2

    关于若依分模块创建项目可参考:https://www.cnblogs.com/conswin/p/9766186.html 了解uflo2,uflo2是一套由BSTEK自主研发的基于Java的工作流引 ...