Thinking in Java(6)-private constructors
来源:互联网 发布:java身份证号计算年龄 编辑:程序博客网 时间:2024/05/17 07:07
If you don’t want anyone else to hava access to your class,you can make all the constructors private,thereby preventing anyone but you,inside a static member of the class,from creating an object of that class.
//Lunch.javaclass Soup1{ private Soup1() {}; public static Soup1 makeSoup(){ return new Soup1(); } }class Soup2{ private Soup2() {} //Create a static object and return a reference upon request.((The "Singleton" pattern; private static Soup2 ps1 = new Soup2(); public static Soup2 access() { return ps1; } public void f() {}}public class Lunch { void testPrivate() { //Can't access,because of private constructor! //Soup1 soup = new Soup1(); } void testStatic() { Soup1 soup = Soup1.makeSoup(); } void testSingleton() { Soup2.access().f(); } public static void main(String[] args) { // TODO 自动生成的方法存根 }}
一个小练习:
Following the form of the example Lunch.java, create a class called ConnectionManager that manages a fixed array of Connection objects. The client programmer must not be able to explicitly create Connection objects, but can only get them via a static method in ConnectionManager. When ConnectionManager runs out of objects, it returns a null reference. Test the classes in main().
my solution:
class ConnectionManager{ private ConnectionManager(){}; static int count = 3; public static ConnectionManager connectClient() { if (count != 0) { count--; System.out.println("Connected!"); return new ConnectionManager(); } else { System.out.println("No more connection!"); count = 0; return null; } } }public class Connection { public static void main(String[] args) { ConnectionManager client1 = ConnectionManager.connectClient(); ConnectionManager client2 = ConnectionManager.connectClient(); ConnectionManager client3 = ConnectionManager.connectClient(); ConnectionManager client4 = ConnectionManager.connectClient(); }}
result:
Connected!Connected!Connected!No more connection!
1 0
- Thinking in Java(6)-private constructors
- Thinking in Java(4)-Calling constructor from constructors
- Thinking in Java(8)-Behavior of Polymorphic methods inside constructors
- thinking in java 之 public private protect
- Thinking in Java笔记6
- thinking in Java 笔记 6
- 17.10.5 Private constructors
- thinking in java的private方法,但不知道这个有什么用
- 《Thinking in Java》——构造器是private时如何创建对象?
- [Java]Thinking in Java
- Note of 《thinking in java》6
- thinking in java 第6天
- Thinking in Java笔记
- 《Thinking in Java》读书笔记
- Thinking in java(1)
- Thinking in JAVA websites
- Thinking in java 笔记
- Thinking In Java (一)
- 学习笔记:STL
- gson
- Android动态加载dex技术初探
- C++ 竞赛常用头文件
- 学习笔记:单调队列
- Thinking in Java(6)-private constructors
- 升级Xcode到8之后,一写代码就闪退的问题
- 学习笔记:状态压缩DP
- Java中等待所有线程都执行结束
- poj 2823 Sliding Window 题解
- 编程之美——中国象棋将帅问题
- 学习笔记:树状数组
- 设计模式(九):策略模式Strategy(行为型模式)
- poj 3784 Running Median