1. 程式人生 > >java 單例模式和工廠模式

java 單例模式和工廠模式

單例模式根據例項化物件時機的不同分為兩種:一種是餓漢式單例,一種是懶漢式單例。
私有的構造方法
指向自己例項的私有靜態引用
以自己例項為返回值的靜態的公有的方法
餓漢式單例

    public class Singleton {
        private static Singleton singleton = new Singleton();
        private Singleton(){}
        public static Singleton getInstance(){
            return singleton;
        }
    }

懶漢式單例

    public class Singleton {
        private static Singleton singleton;
        private Singleton(){}

        public static synchronized Singleton getInstance(){
            if(singleton==null){
                singleton = new Singleton();
            }
            return singleton;
        }
    }

工廠方法模式程式碼

    interface IProduct {
        public void productMethod();
    }

    class Product implements IProduct {
        public void productMethod() {
            System.out.println("產品");
        }
    }

    interface IFactory {
        public IProduct createProduct();
    }

    class Factory implements IFactory {
        public IProduct createProduct() {
            return new Product();
        }
    }

    public class Client {
        public static void main(String[] args) {
            IFactory factory = new Factory();
            IProduct prodect = factory.createProduct();
            prodect.productMethod();
        }
    }

抽象工廠模式程式碼

    interface IProduct1 {
        public void show();
    }
    interface IProduct2 {
        public void show();
    }

    class Product1 implements IProduct1 {
        public void show() {
            System.out.println("這是1型產品");
        }
    }
    class Product2 implements IProduct2 {
        public void show() {
            System.out.println("這是2型產品");
        }
    }

    interface IFactory {
        public IProduct1 createProduct1();
        public IProduct2 createProduct2();
    }
    class Factory implements IFactory{
        public IProduct1 createProduct1() {
            return new Product1();
        }
        public IProduct2 createProduct2() {
            return new Product2();
        }
    }

    public class Client {
        public static void main(String[] args){
            IFactory factory = new Factory();
            factory.createProduct1().show();
            factory.createProduct2().show();
        }

    }

【原創】原創文章,更多關注敬請關注微信公眾號。