day03--面向对象--设计模式之单例模式
来源:互联网 发布:考研网络辅导班 编辑:程序博客网 时间:2024/05/01 00:01
package day03;/* * 静态代码块:static { },主要作用:初始化静态成员变量 * * 静态代码块:随着类的加载而执行的,只执行一次 * * 构造代码块:{ },优先于构造方法执行,主要是来初始化成员变量 * * 构造代码块:随着对象的创建而执行,每次创建对象而执行 * * static修饰符什么时候使用? * 1.在多个类之间共享成员变量时,需要将其改为static静态成员 * 2.如果一个成员方法中没有访问本类的成员变量,则将其改为static静态成员方法 * * 注: * 在程序优化中,建议不要过多地使用static,因为它会长时间地保留在内存中(方法区的静态区) * *对象初始化过程: * 1.加载类的字节码文件到jvm的方法区中 * 2.为静态成员变量在静态区开辟内存空间,并初始化默认值 * 3.加载静态代码块,初始化静态成员变量 * 4.在堆中开辟空间(根据成员变量的大小),并默认初始化成员变量 * 5.加载构造代码块,显示初始化成员变量 * 6.加载构造方法,显示初始化成员变量 * 7.将堆内存空间的首地址赋给对象的引用 */public class Demo7 { private static int age; static { System.out.println("age-->" + age); // 初始化静态成员变量,在类加载时执行 age = 18; System.out.println("age-->" + age); } { // 构造代码块,可以被看成是一个无参的构造方法 age += 1; System.out.println("构造代码块--->age" + age); } public static void main(String[] args) { new Demo7(); // System.out.println("--age-->" + age); new Demo7(); new Demo7(); new Demo7(); } public Demo7() { age += 1; System.out.println("构造方法中: age-->" + age); }}
package day03;/* * 设计模式:23种,解决某一类问题的最有效方法 * * 单例模式:在程序运行期间,保证类对象只会创建一次 * * 实现过程: * * 1.私有化构造方法 * * 2.提供本类的实例对象(饿汉式和懒汉式) * * 3.向类的外部提供一个方法,获取类的对象 */class View { private static View view = new View();// 2.提供本类的对象 private View() { // 1. 构造方法私有化,不能在类的外部通过new创建对象 } // 3.向外部提供可访问的方法,并返回当前类的对象 public static View getInstance() {// 静态成员不能访问非静态成员 return view; }}class TextView { private static TextView tv; private String text; private TextView(String text) { this.text = text; } public String getText() { return text; } public static TextView getInstance(String text) { if (tv == null) {// 懒汉式 tv = new TextView(text); } return tv; }}public class Demo9 { public static void main(String[] args) { View v1 = View.getInstance(); View v2 = View.getInstance(); System.out.println(v1 == v2);// 比较的是内存地址 TextView tv1 = TextView.getInstance("张三"); TextView tv2 = TextView.getInstance("李四"); System.out.println(tv1 == tv2); System.out.println(tv2.getText()); }}
package day03;class BreadMachine { private static BreadMachine bm = null; private int counter;// 默认为0 public BreadMachine() { } // 单例模式,获取当前类的对象 public static BreadMachine getInstance() { if (bm == null) { bm = new BreadMachine();// 创建对象 } return bm; } public void create() { counter++; System.out.println(String.format("正在制作第%d个面包", counter)); }}public class Demo10 { public static void main(String[] args) { BreadMachine bm = BreadMachine.getInstance(); for (int i = 0; i < 10; i++) { bm.create(); } BreadMachine bm2 = BreadMachine.getInstance(); for (int i = 0; i < 10; i++) { bm2.create(); } }}
0 0
- day03--面向对象--设计模式之单例模式
- 面向对象之单例设计模式
- 面向对象设计模式之Singleton单例模式
- 【面向对象】——设计模式之单例模式
- 面向对象设计模式--单例模式
- 黑马程序员-面向对象之单例设计模式
- 面向对象之this、static和单例设计模式
- javaSE-面向对象-单例设计模式
- Java面向对象-单例设计模式
- Java面向对象,单例设计模式
- 面向对象-单例设计模式
- 面向对象 单例设计模式
- 面向对象的设计模式(一),单例模式
- 可复用面向对象软件基础——设计模式(四)之单例模式
- PHP面向对象深入理解之四(设计模式-单例模式)
- PHP 面向对象:设计模式之单…
- 面向对象静态static应用之单态设计模式
- 面向对象编程之单态设计模式
- @Resource注解
- 程序设计《银行系统》
- 使用 JQueryMobile 点击超链接提示“error loading page” 错误
- 关于Java传值和传址的一些讨论
- [Jsoup] Jsoup解析中需要注意的问题
- day03--面向对象--设计模式之单例模式
- 基于Spring-SpringMVC-Mybatis的简单例子
- 极客学院java 接口使用代码笔记
- 【解决】hive与hbase表结合级联查询的问题
- Setup contiki toolchain in ubuntu 13.04
- SQL注入原理讲解,很不错!
- GRE写作必备句型
- 数据库,啥叫事物?
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案