十、JAVA设计模式的引出

1. 设计模式的简介

Java中有23 种设计模式,本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。

当然,软件设计模式只是一个引导,在实际的软件开发中,必须根据具体的需求来选择。

1、 对于简单的程序,可能写一个简单的算法要比引入某种设计模式更加容易。

2、 但是对于大型项目开发或者框架设计,用设计模式来组织代码显然更好。

1.1 单例设计模式概念

单例模式可以说是大多数开发人员在实际中使用最多的,常见的Spring默认创建的bean就是单例模式的。

单例模式有很多好处,比如可节约系统内存空间,控制资源的使用。

其中单例模式最重要的是确保对象只有一个。

简单来说,保证一个类在内存中的对象就一个。

RunTime就是典型的单例设计,我们通过对RunTime类的分析,一窥究竟。

1.2 源码剖析

/**
 * Every Java application has a single instance of class
 * <code>Runtime</code> that allows the application to interface with
 * the environment in which the application is running. The current
 * runtime can be obtained from the <code>getRuntime</code> method.
 * <p>
 * An application cannot create its own instance of this class.
 *
 * @author  unascribed
 * @see    java.lang.Runtime#getRuntime()
 * @since   JDK1.0
 */
RunTime.java
package java.lang;
public class Runtime {
    //1、创建静态的全局唯一的对象
    private static Runtime currentRuntime = new Runtime();

    //2、私有构造方法,
    /** Don't let anyone else instantiate this class */
    private Runtime() {}

    //3、通过自定义的静态方法获取实例
    public static Runtime getRuntime() {
        return currentRuntime;
    }
}

1.3 饿汉式

目的:控制外界创建对象的个数只能创建1个对象

开发步骤:

1、 私有化构造方法

2、 在类的内部创建好对象

3、 对外界提供一个公共的get(),返回一个已经准备好的对象

//测试单例设计模式 
public class TestSingle {
    public static void main(String[] args) {
       Single s = Single.get();
       Single s1 = Single.get();
     
       //get()多少次,内存中使用的都是同一个对象
       System.out.println(s);//Single@15db9742
       System.out.println(s1);//Single@15db9742
    }
}

class Single{
//  1、私有化构造方法,不让外界直接new
    private Single() {}
   
//  2、在类的内部,创建好对象
    //static :静态只能调用静态
    static private  Single s = new Single();
   
//  3、对外界提供一个公共的get(),返回一个已经准备好的对象

//static是为了外界不通过对象访问而是通过类名直接方法 
    static public Single get(){
       //注意:静态只能调用静态
       return s;
    }
}

1.4 懒汉式

class Single{
//  1、私有化构造方法,不让外界直接new
    private Single() {}
 
//  2、在类的内部,创建好对象
    //static :静态只能调用静态
    static private  Single s = null;
   
//  3、对外界提供一个公共的get(),返回一个已经准备好的对象
//static是为了外界不通过对象访问而是通过类名直接方法 
synchronized  static public Single get(){
       //注意:静态只能调用静态
       if(s==null){
           s = new Single();//会有安全问题,所以加锁
       }
       return s;
    }
}

2. 软件设计的开闭原则OCP

开放功能扩展,关闭源码修改。等

开闭原则的英文全称是Open Close Principle,缩写是OCP,它是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。

开闭原则的定义是:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。

开闭原则,是一种设计模式,随着面向对象程序设计的思想,应运而生。

开,指的是可以在源代码的基础上进行扩展,比如继承,接口,抽象类等。在JAVA中,之所以用继承,是在可以直接调用类库的前提下,对其功能进行扩展。不需要应用者去了解封装类的内部逻辑就可以做开发。

闭:指不允许对原有的代码进行修改。以免影响其他现有功能,造成功能瘫痪。

本文只是引出,还有其他设计模式和设计原则还需要展开学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值