Android设计模式——单例模式(Singleton)

二十三种设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  1 package com.example.main;
  2
  3 import android.app.Activity;
  4 import android.content.Context;
  5 import android.os.Bundle;
  6 import android.widget.LinearLayout;
  7 import android.widget.TextView;
  8
  9 /*
 10  * Android设计模式——单例模式(Singleton)
 11  */
 12
 13 public class Singleton extends Activity {
 14
 15     private LinearLayout ly;
 16     private LinearLayout sly;
 17
 18     @Override
 19     protected void onCreate(Bundle savedInstanceState) {
 20         super.onCreate(savedInstanceState);
 21         setContentView(R.layout.create);
 22
 23         ly = (LinearLayout) findViewById(R.id.creately);
 24         sly = (LinearLayout) findViewById(R.id.singly);
 25
 26         Android google = new Android("谷歌",ly,this);
 27         google.setName();
 28
 29         Android huawei = new Android("华为",ly,this);
 30         huawei.setName();
 31
 32         //第一次实例化
 33         IOS ios = IOS.getInstance("苹果", sly, this);
 34         ios.setName();
 35
 36         //第二次调用
 37         IOS samsung = IOS.getInstance("三星", ly, this);
 38         samsung.setName();
 39     }
 40
 41     /*
 42      * Android厂商
 43      */
 44
 45     class Android{
 46
 47         private String name;
 48         private LinearLayout ly;
 49         private TextView tv;
 50         private Context context;
 51
 52         public Android(String name,LinearLayout ly,Context context){
 53             this.name = name;
 54             this.ly = ly;
 55             this.context = context;
 56         }
 57
 58         public void setName() {
 59             tv = new TextView(context);
 60             this.tv.setText(name + "的Android设备");
 61             this.ly.addView(this.tv);
 62         }
 63     }
 64
 65     /*
 66      * 苹果厂商
 67      */
 68
 69     static class IOS{
 70
 71         private String name;
 72         private LinearLayout ly;
 73         private TextView tv;
 74         private Context context;
 75
 76         //禁止引用
 77
 78         private static IOS instance = null;
 79
 80         //私有构造函数,防止被实例化。
 81
 82         private IOS(){}
 83
 84         private IOS(String name,LinearLayout ly,Context context){
 85             this.name = name;
 86             this.ly = ly;
 87             this.context = context;
 88         }
 89
 90         //创建实例
 91
 92         public static IOS getInstance(String name,LinearLayout ly,Context context){
 93
 94             if (instance == null) {
 95                 instance = new IOS(name,ly, context);
 96             }
 97             return instance;
 98         }
 99
100         public void setName() {
101             tv = new TextView(context);
102             tv.setText("IOS只属于"+name+"公司");
103             ly.addView(tv);
104         }
105     }
106 }

时间: 2024-10-05 04:43:13

Android设计模式——单例模式(Singleton)的相关文章

php设计模式——单例模式(Singleton)

二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 谷歌的Android设备 华为的Android设备 IOS只属于苹果公司 IOS只属于苹果公司 1 <?php 2 3 /* 4 * php

Android 设计模式-单例模式

Android 设计模式-单例模式 什么情况下需要单例模式? 一些类提供公共功能供别人调用,本身不会处理业务逻辑 类会被许多类和线程调用 设计单例模式 public class Singleton{ private static Singleton mSingleton; private Singleton(){ } public static Singleton getInstance(){ if(mSingleton == null){ mSingleton = new Singleton(

Java 设计模式 单例模式(Singleton) [ 转载 ]

Java 设计模式 单例模式(Singleton) [ 转载 ] 转载请注明出处:http://cantellow.iteye.com/blog/838473 前言 懒汉:调用时才创建对象 饿汉:类初始化时就创建对象 第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private Singleton (){} 4 5 public static Singleton getInstan

设计模式-单例模式(Singleton)在Android开发应用场景思考和遇到的坑

介绍 在上篇博客中详细说明了各种单例的写法和问题.这篇主要介绍单例在Android开发中的各种应用场景以及和静态类方法的对比考虑,举实际例子说明. 单例的思考 写了这么多单例,都快忘记我们到底为什么需要单例,复习单例的本质 单例的本质:控制实例的数量 全局有且只有一个对象,并能够全局访问得到. 控制实例数量 有时候会思考如果我们需要控制实例的数量不是只有一个,而是2.3.4或者任意多个呢?我们怎样控制实例的数量,其实实现思路也简单,就是通过Map缓存实例,控制缓存的数量,当有调用就返回某个实例,

设计模式--单例模式Singleton

单例模式顾名思义整个程序下只有一个实例,例如一个国家只有一个皇帝,一个军队只有一个将军.单例模式的书写又分为饿汉模式和懒汉模式 饿汉模式   类中代码 package demo; public class Singleton { //私有化构造函数 private Singleton() { } //由于外部无法实例对象,顾在类中实例,定义为static将对象直接由类调用 private static Singleton instance = new Singleton(); //定义公有成员函

JAVA设计模式-单例模式(Singleton)线程安全与效率

一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式进行探索的. 本文的目的是:结合文章中的八种单例模式的写法,使用实际的示例,来演示线程安全和效率 既然是实际的示例,那么就首先定义一个业务场景:购票.大家都知道在春运的时候,抢票是非常激烈的.有可能同一张票就同时又成百上千的人同时在抢.这就对代码逻辑的要求很高了,即不能把同一张票多次出售,也不能出现

Android设计模式之单例模式(Singleton Pattern)

个人总结学习和研究,部分内容参考<Android源码设计模式解析与实战>一书~~ 一.  定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 也就是说,单例要满足3点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例.(构造函数私有化,防止外部程序通过new来构造). 3.单例类必须给其他对象提供这一实例.(暴露公有静态方法或者通过枚举返回单例类对象). 二.  使用场景: 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源.比如说在一个

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

Android 设计模式 之 单例模式

http://blog.csdn.net/fangchongbory/article/details/7734199 目录(?)[+] 单例模式常见情景 首先实现1中的单例模式A 实现2中单例模式B 实现3单例模式C 实现4单例模式D 可带参数单例模式E 终极版单例模式F android中源码单例模式举例 日历模块 Collator类 Editable类 AccessibilityManager类 1.单例模式常见情景 设计模式中,最简单不过的就是单例模式.先看看单例模式 原文:http://w