java中23种设计模式之5-多例模式(multition pattern)

顾名思义,多例模式相对于单例模式,就是可以有多于一个的有限实例,如下列,只能有两个实例。

import java.util.ArrayList;
import java.util.Random;
class Multition
{
private final static int MAX_NUMBER=2;
private static ArrayList<Multition> aMultitionArrayList=new ArrayList<Multition>();
private static int index=0;
private String CurrentMultitionInfo;
static
{
for(int i=0;i<MAX_NUMBER;i++)
{
index=i;
aMultitionArrayList.add(new Multition());
}
}
private Multition()
{
CurrentMultitionInfo="the current object is "+index;
}
public static Multition getInstance()
{
Random aRandom=new Random();
index=aRandom.nextInt(MAX_NUMBER);
return aMultitionArrayList.get(index);
}
public void printMultitionInfo()
{
System.out.println(CurrentMultitionInfo);
}
}

public class MultitionPatternTest
{
public static void main(String[] args)
{
Multition aMultiton=null;
for(int i=0;i<10;i++)
{
aMultiton=Multition.getInstance();
aMultiton.printMultitionInfo();
}
}
}

///////////////////////////////

输出结果:

the current object is 1
the current object is 1
the current object is 0
the current object is 1
the current object is 0
the current object is 0
the current object is 0
the current object is 0
the current object is 1
the current object is 0

时间: 2024-12-31 05:47:47

java中23种设计模式之5-多例模式(multition pattern)的相关文章

java中23种设计模式之16-访问者模式(visitor pattern)

import java.util.ArrayList;import java.util.List;abstract class IVisitor{ public abstract void visit(Banana banana); public abstract void visit(Rice rice); public void visit(IElement iElement) { System.out.println("什么东西,怎么吃啊?"); }} class Human e

java中23种设计模式之9-建造者模式(builder pattern)

class Computer{ private String name=null; private String cpu=null; private String ddr=null; private String hdd=null; public void setName(String name) { this.name=name; } public void setCpu(String cpu) { this.cpu=cpu; } public void setDdr(String ddr)

java中23种设计模式之8-模板方法模式(template method pattern)

abstract class PhoneModel6Inch{ public void printPhoneInfo() { screenSize(); systemType(); colorType(); } protected final void screenSize() { System.out.print("6 inch,"); } abstract protected void systemType(); abstract void colorType(); }class

java中23种设计模式之19-中介者模式(mediator pattern)

abstract class AbstractColleague{ public abstract void workSelf(); public abstract void requestOthersHelp();} class ColleagueA extends AbstractColleague{ Mediator aMediator=new Mediator(); public void workSelf() { System.out.println("ColleagueA-->

java中23种设计模式之20-备忘录模式(memento pattern)

abstract class Health{ private int blood; private int mana; public void setBlood(int blood) { this.blood=blood; } public int getBlood() { return blood; } public void setMana(int mana) { this.mana=mana; } public int getMana() { return mana; } public a

Java中23种设计模式(附代码样例)

一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式.行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式.其实还有两类:并发型模式和线程池模式 二.设计模式的六大原则1.开闭原则(Open Close Principle)开闭原则就是说对

Java中23种设计模式--超快速入门及举例代码

在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录. 原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注:本文代码基本都有很多没有初始化等等问题,主要是为了减少代码量,达到一眼就能了解大概情况的目的. java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,

java中23种设计模式之13-组合模式(composite pattern)

import java.util.LinkedList;abstract class Company{ private String name; public void setName(String name) { this.name=name; } public String getName() { return name; } abstract void add(Company company); abstract void remove(Company company); abstract

java中23种设计模式之6-外观模式(facade pattern)

概念:为子系统中的一组接口提供一个统一接口.Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 应用场景: 1)为一个复杂子系统提供一个简单接口. 2)提高子系统的独立性. 3)在层次化结构中,可以使用Facade模式定义系统中每一层的入口. 以大型娱乐商场提供的休闲一条龙服务为例,包括购物,餐饮,按摩.其中购物,按摩,餐饮作为子系统的组成,提供统一对外接口PackageService 类图如下: class Shopping{ String customer=null; pu