Keeping A Constructor Private

In terms of inheritance,

When Class A has a private constructor, this private constructor is accessible only to those who have access to A’s private methods.
A’s inner classes and if A is an inner class of some class S, other inner classes of S have access to the private constructor.

So, A can be inherited by its own inner classes or S’s other inner classes.

To Achieve Singleton Pattern,

Singleton Pattern means that a single class is responsible for creating an object while making sure that only a single object gets created.

So to achieve this, the constructor must be private.

Singleton class creation

<span>public</span> <span>class</span> <span>SingletonObject</span> <span>{</span>
<span>private</span> <span>static</span> <span>SingletonObject</span> <span>singletonObject</span> <span>=</span> <span>new</span> <span>SingletonObject</span><span>();</span>
<span>// make the constructor private so that this class cannot be</span>
<span>// instantiated</span>
<span>private</span> <span>SingletonObject</span><span>()</span> <span>{</span>
<span>}</span>
<span>// Get the only object available</span>
<span>public</span> <span>static</span> <span>SingletonObject</span> <span>getInstance</span><span>()</span> <span>{</span>
<span>return</span> <span>singletonObject</span><span>;</span>
<span>}</span>
<span>public</span> <span>void</span> <span>showMessage</span><span>()</span> <span>{</span>
<span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Singleton Pattern"</span><span>);</span>
<span>}</span>
<span>}</span>
<span>public</span> <span>class</span> <span>SingletonObject</span> <span>{</span>

    <span>private</span> <span>static</span> <span>SingletonObject</span> <span>singletonObject</span> <span>=</span> <span>new</span> <span>SingletonObject</span><span>();</span>

    <span>// make the constructor private so that this class cannot be</span>
    <span>// instantiated</span>
    <span>private</span> <span>SingletonObject</span><span>()</span> <span>{</span>
    <span>}</span>

    <span>// Get the only object available</span>
    <span>public</span> <span>static</span> <span>SingletonObject</span> <span>getInstance</span><span>()</span> <span>{</span>
        <span>return</span> <span>singletonObject</span><span>;</span>
    <span>}</span>

    <span>public</span> <span>void</span> <span>showMessage</span><span>()</span> <span>{</span>
        <span>System</span><span>.</span><span>out</span><span>.</span><span>println</span><span>(</span><span>"Singleton Pattern"</span><span>);</span>
    <span>}</span>
<span>}</span>
public class SingletonObject { private static SingletonObject singletonObject = new SingletonObject(); // make the constructor private so that this class cannot be // instantiated private SingletonObject() { } // Get the only object available public static SingletonObject getInstance() { return singletonObject; } public void showMessage() { System.out.println("Singleton Pattern"); } }

Get object from singleton class

<span>public</span> <span>class</span> <span>SingletonPatternEx</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
<span>//Get the only object available</span>
<span>SingletonObject</span> <span>object</span> <span>=</span> <span>SingletonObject</span><span>.</span><span>getInstance</span><span>();</span>
<span>//show the message</span>
<span>object</span><span>.</span><span>showMessage</span><span>();</span>
<span>}</span>
<span>}</span>
<span>public</span> <span>class</span> <span>SingletonPatternEx</span> <span>{</span>

    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
        <span>//Get the only object available</span>
          <span>SingletonObject</span> <span>object</span> <span>=</span> <span>SingletonObject</span><span>.</span><span>getInstance</span><span>();</span>

          <span>//show the message</span>
          <span>object</span><span>.</span><span>showMessage</span><span>();</span>

    <span>}</span>

<span>}</span>
public class SingletonPatternEx { public static void main(String[] args) { //Get the only object available SingletonObject object = SingletonObject.getInstance(); //show the message object.showMessage(); } }

Output

<span>Singleton</span> <span>Pattern</span>
<span>Singleton</span> <span>Pattern</span>
Singleton Pattern

原文链接:Keeping A Constructor Private

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
Time always save the best for last.
时间总把最好的人留到最后
评论 抢沙发

请登录后发表评论

    暂无评论内容