class PrintServerEager{
private static PrintServerEager instance1 = new PrintServerEager( ) ;
private PrintServerEager( ) {
}
public static PrintServerEager getInstance1( )
{
return instance1;
}
void printDocument1
( String documentName
) {
System .
out .
println ( "Name of the document is = " + documentName
) ; }
}
class PrintServerLazy{
private static PrintServerLazy instance2;
private PrintServerLazy( ) {
}
public static PrintServerLazy getInstance2( )
{
if ( instance2 == null )
{
instance2 = new PrintServerLazy( ) ;
}
return instance2;
}
void printDocument2
( String documentName
) {
System .
out .
println ( "Name of the document is = " + documentName
) ; }
}
public class Main{
public static void main
( String [ ] args
) { PrintServerEager obj1 = PrintServerEager.getInstance1 ( ) ;
PrintServerEager obj2 = PrintServerEager.getInstance1 ( ) ;
obj1.printDocument1 ( "Report.pdf" ) ;
obj2.printDocument1 ( "Assignment.docx" ) ;
if ( obj1 == obj2) {
System .
out .
println ( "Both references point to the same Eager instance" ) ; }
else {
System .
out .
println ( "Get out!" ) ; }
PrintServerLazy obj3 = PrintServerLazy.getInstance2 ( ) ;
PrintServerLazy obj4 = PrintServerLazy.getInstance2 ( ) ;
obj3.printDocument2 ( "Thesis.pdf" ) ;
obj4.printDocument2 ( "LabReport.docx" ) ;
if ( obj3== obj4)
{
System .
out .
println ( "Both references point to the same Lazy instance" ) ; }
else {
System .
out .
println ( "Get out too!" ) ; }
}
}
Y2xhc3MgUHJpbnRTZXJ2ZXJFYWdlcnsKICAgIHByaXZhdGUgc3RhdGljIFByaW50U2VydmVyRWFnZXIgaW5zdGFuY2UxID0gbmV3IFByaW50U2VydmVyRWFnZXIoKTsKICAgIHByaXZhdGUgUHJpbnRTZXJ2ZXJFYWdlcigpewogICAgfQogICAgcHVibGljIHN0YXRpYyBQcmludFNlcnZlckVhZ2VyIGdldEluc3RhbmNlMSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlMTsKICAgIH0KICAgIHZvaWQgcHJpbnREb2N1bWVudDEoU3RyaW5nIGRvY3VtZW50TmFtZSkKICAgIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5hbWUgb2YgdGhlIGRvY3VtZW50IGlzID0gIitkb2N1bWVudE5hbWUpOwogICAgfQp9CgpjbGFzcyBQcmludFNlcnZlckxhenl7CiAgICBwcml2YXRlIHN0YXRpYyBQcmludFNlcnZlckxhenkgaW5zdGFuY2UyOwogICAgcHJpdmF0ZSBQcmludFNlcnZlckxhenkoKXsKICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgUHJpbnRTZXJ2ZXJMYXp5IGdldEluc3RhbmNlMigpCiAgICB7CiAgICAgICAgaWYoaW5zdGFuY2UyID09IG51bGwpCiAgICAgICAgewogICAgICAgICAgICBpbnN0YW5jZTIgPSBuZXcgUHJpbnRTZXJ2ZXJMYXp5KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbnN0YW5jZTI7CiAgICB9CiAgICB2b2lkIHByaW50RG9jdW1lbnQyKFN0cmluZyBkb2N1bWVudE5hbWUpCiAgICB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOYW1lIG9mIHRoZSBkb2N1bWVudCBpcyA9ICIrZG9jdW1lbnROYW1lKTsKICAgIH0KfQoKcHVibGljIGNsYXNzIE1haW57CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgewogICAgICAgIFByaW50U2VydmVyRWFnZXIgb2JqMSA9IFByaW50U2VydmVyRWFnZXIuZ2V0SW5zdGFuY2UxKCk7CiAgICAgICAgUHJpbnRTZXJ2ZXJFYWdlciBvYmoyID0gUHJpbnRTZXJ2ZXJFYWdlci5nZXRJbnN0YW5jZTEoKTsKICAgICAgICAKICAgICAgICBvYmoxLnByaW50RG9jdW1lbnQxKCJSZXBvcnQucGRmIik7CiAgICAgICAgb2JqMi5wcmludERvY3VtZW50MSgiQXNzaWdubWVudC5kb2N4Iik7CiAgICAgICAgCiAgICAgICAgaWYob2JqMSA9PSBvYmoyKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJCb3RoIHJlZmVyZW5jZXMgcG9pbnQgdG8gdGhlIHNhbWUgRWFnZXIgaW5zdGFuY2UiKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJHZXQgb3V0ISIpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBQcmludFNlcnZlckxhenkgb2JqMyA9IFByaW50U2VydmVyTGF6eS5nZXRJbnN0YW5jZTIoKTsKICAgICAgICBQcmludFNlcnZlckxhenkgb2JqNCA9IFByaW50U2VydmVyTGF6eS5nZXRJbnN0YW5jZTIoKTsKICAgICAgICAKICAgICAgICBvYmozLnByaW50RG9jdW1lbnQyKCJUaGVzaXMucGRmIik7CiAgICAgICAgb2JqNC5wcmludERvY3VtZW50MigiTGFiUmVwb3J0LmRvY3giKTsKICAgICAgICAKICAgICAgICBpZihvYmozPT1vYmo0KQogICAgICAgIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJCb3RoIHJlZmVyZW5jZXMgcG9pbnQgdG8gdGhlIHNhbWUgTGF6eSBpbnN0YW5jZSIpOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkdldCBvdXQgdG9vISIpOwogICAgICAgIH0KICAgIH0KfQ==