<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>牧羊人的方向 &#187; JAVA编程，单例模式</title>
	<atom:link href="http://www.sweetytang.com/archives/tag/java%e7%bc%96%e7%a8%8b%ef%bc%8c%e5%8d%95%e4%be%8b%e6%a8%a1%e5%bc%8f/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sweetytang.com</link>
	<description>追风少年,且听风吟,风犹在耳,牧羊人的方向</description>
	<lastBuildDate>Mon, 08 Sep 2014 05:13:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Java中的单例模式</title>
		<link>http://www.sweetytang.com/archives/145.html</link>
		<comments>http://www.sweetytang.com/archives/145.html#comments</comments>
		<pubDate>Sun, 18 Aug 2013 14:03:05 +0000</pubDate>
		<dc:creator>牧羊人</dc:creator>
				<category><![CDATA[师夷长技]]></category>
		<category><![CDATA[JAVA编程，单例模式]]></category>

		<guid isPermaLink="false">http://www.sweetytang.com/?p=145</guid>
		<description><![CDATA[单例模式属于对象创建型模式，其意图是保证一个类仅有一个实例，并提供一个访问它的全局访问点。对一些类来说，只有一个实例是很重要的，虽然系统中可以有许多打印机，但却只应该有一个打印机假脱机，只应该有一个文件系统和一个窗口管理器，一个数字滤波器只能有一个A/D转换器，一个会计系统只能专用于一个公司。怎样才能保证一个类只有一个实例并且这个实例易于被访问，一个全局变量使得一个对象可以被访问，但它不能防止你实例化多个对象，一个更好的方法是让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建，并且它可以提供一个访问该实例的方法，这就是Singleton模式。 实用性：在下面的情况下可以使用Singleton模式： 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的，并且客户应该无需更改代码就能使用一个扩展的实例时。 import javax.swing.*; import java.awt.*; public class TestSingleton {     public static void main(String args[])     {         System.out.println(“System Print Out”);        int x1=40;        int y1=40;        int x2=100;        int y2=100;        Color paint_color &#8230; <a href="http://www.sweetytang.com/archives/145.html">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>单例模式属于对象创建型模式，其意图是保证一个类仅有一个实例，并提供一个访问它的全局访问点。对一些类来说，只有一个实例是很重要的，虽然系统中可以有许多打印机，但却只应该有一个打印机假脱机，只应该有一个文件系统和一个窗口管理器，一个数字滤波器只能有一个A/D转换器，一个会计系统只能专用于一个公司。怎样才能保证一个类只有一个实例并且这个实例易于被访问，一个全局变量使得一个对象可以被访问，但它不能防止你实例化多个对象，一个更好的方法是让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建，并且它可以提供一个访问该实例的方法，这就是Singleton模式。<span id="more-145"></span></p>
<p>实用性：在下面的情况下可以使用Singleton模式：</p>
<ul>
<li>当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。</li>
<li>当这个唯一实例应该是通过子类化可扩展的，并且客户应该无需更改代码就能使用一个扩展的实例时。</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="568">
<p align="left"><strong>import</strong> javax.swing.*;</p>
<p align="left"><strong>import</strong> java.awt.*;</p>
<p align="left">
<p align="left"><strong>public</strong> <strong>class</strong> TestSingleton</p>
<p align="left">{</p>
<p align="left">    <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String args[])</p>
<p align="left">    {</p>
<p align="left">        System.<em>out</em>.println(“System Print Out”);</p>
<p align="left">       <strong>int</strong> x1=40;</p>
<p align="left">       <strong>int</strong> y1=40;</p>
<p align="left">       <strong>int</strong> x2=100;</p>
<p align="left">       <strong>int</strong> y2=100;</p>
<p align="left">       Color paint_color = Color.<em>blue</em>;</p>
<p align="left">       Video2.<em>getInstance</em>(x1,y1,x2,y2,paint_color);</p>
<p align="left">       <strong>for</strong>(<strong>int</strong> i=0;i&lt;3;i++)</p>
<p align="left">       {</p>
<p align="left">           paint_color = Color.<em>red</em>;</p>
<p align="left">           Video2.<em>getInstance</em>(x1+40,y1+40,x2,y2,paint_color);</p>
<p align="left">       }</p>
<p align="left">       System.<em>out</em>.println(“System Print Out”);</p>
<p align="left">    }</p>
<p align="left">}</p>
<p align="left">
<p align="left"><strong>class</strong> <span style="text-decoration: underline;">Video2</span> <strong>extends</strong> JFrame</p>
<p align="left">{</p>
<p align="left">    <strong>static</strong> <strong>int</strong> <em>x1</em>;</p>
<p align="left">    <strong>static</strong> <strong>int</strong> <em>y1</em>;</p>
<p align="left">    <strong>static</strong> <strong>int</strong> <em>x2</em>;</p>
<p align="left">    <strong>static</strong> <strong>int</strong> <em>y2</em>;</p>
<p align="left">    <strong>static</strong> Color <em>paint_color</em>;</p>
<p align="left">    //定义Construct函数，将需要的参数带入</p>
<p align="left">    <strong>public</strong> Video2(<strong>int</strong> x1,<strong>int</strong> y1,<strong>int</strong> x2,<strong>int</strong> y2, Color paint_color)</p>
<p align="left">    {</p>
<p align="left">       Video2.<em>x1</em>=x1;</p>
<p align="left">       Video2.<em>y1</em>=y1;</p>
<p align="left">       Video2.<em>x2</em>=x2;</p>
<p align="left">       Video2.<em>y2</em>=y2;</p>
<p align="left">       Video2.<em>paint_color</em> = paint_color;</p>
<p align="left">       setBounds(200,100,200,500);</p>
<p align="left">       setDefaultCloseOperation(JFrame.<em>EXIT_ON_CLOSE</em>);</p>
<p align="left">       setVisible(<strong>true</strong>);</p>
<p align="left">    }</p>
<p align="left">    <strong>int</strong> j=0;</p>
<p align="left">
<p align="left">    //@Override</p>
<p align="left">    <strong>public</strong> <strong>void</strong> paint(Graphics g)</p>
<p align="left">    {</p>
<p align="left">       System.<em>out</em>.println(++j);</p>
<p align="left">       g.setColor(<em>paint_color</em>);</p>
<p align="left">       g.drawLine(<em>x1</em>, <em>y1</em>, <em>x2</em>, <em>y2</em>);</p>
<p align="left">    }</p>
<p align="left">
<p align="left">    <strong>public</strong> <strong>static</strong> <strong>synchronized</strong> Video2 getInstance(<strong>int</strong> x1,<strong>int</strong> y1,<strong>int</strong> x2,<strong>int</strong> y2,Color paint_color){</p>
<p align="left">        <strong>if</strong> (<em>instance</em> == <strong>null</strong>) {</p>
<p align="left">          <em>instance</em> = <strong>new</strong> Video2(x1, y1, x2, y2, paint_color);</p>
<p align="left">        }</p>
<p align="left">        <em>instance</em>.repaint();</p>
<p align="left">        <strong>return</strong> <em>instance</em>;</p>
<p align="left">      }</p>
<p align="left">
<p align="left">    <strong>private</strong> <strong>static</strong> Video2 <em>instance</em>;</p>
<p>}</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sweetytang.com/archives/145.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
