zoukankan      html  css  js  c++  java
  • 设计模式-单例模式、工厂模式

    一、单例模式

    1、饿汉模式

    public class Singleton {
        private static Singleton uniqueInstance = new Singleton();
        private Singleton() {
        }
    }

    2、懒汉式-线程安全

    public class Singleton {
        private static Singleton uniqueInstance;
        private Singleton() {
        }
        public static synchronized Singleton getUniqueInstance() {
            if (uniqueInstance == null) {
                uniqueInstance = new Singleton();
            }
            return uniqueInstance;
        }
    }

    二、工厂模式

    1、简单工厂模式

    public interface Product {
    }
    public class ConcreteProduct implements Product {
    }
    public class ConcreteProduct1 implements Product {
    }
    public class ConcreteProduct2 implements Product {
    }
    
    public class Client {
        public static void main(String[] args) {
            int type = 1;
            Product product;
            if (type == 1) {
            product = new ConcreteProduct1();
            } else if (type == 2) {
           product = new ConcreteProduct2();
            } else {
            product = new ConcreteProduct();
            }
            // do something with the product
        }
    }        

    2、工厂方法

    public abstract class Factory {
      abstract public Product factoryMethod();
      public void doSomething() {
      Product product = factoryMethod();
      // do something with the product
      }
    }
    public class ConcreteFactory extends Factory {
      public Product factoryMethod() {
        return new ConcreteProduct();
      }
    }
    public class ConcreteFactory1 extends Factory {
      public Product factoryMethod() {
        return new ConcreteProduct1();
      }
    }
    public class ConcreteFactory2 extends Factory {
      public Product factoryMethod() {
        return new ConcreteProduct2();
      }
    }

    3、抽象工厂模式

    public class AbstractProductA {
    }
    
    public class AbstractProductB {
    }
    
    public class ProductA1 extends AbstractProductA {
    }
    
    public class ProductA2 extends AbstractProductA {
    }
    
    public class ProductB1 extends AbstractProductB {
    }
    
    public class ProductB2 extends AbstractProductB {
    }
    
    public abstract class AbstractFactory {
        abstract AbstractProductA createProductA();
    
        abstract AbstractProductB createProductB();
    }
    
    public class ConcreteFactory1 extends AbstractFactory {
        AbstractProductA createProductA() {
            return new ProductA1();
        }
    
        AbstractProductB createProductB() {
            return new ProductB1();
        }
    }
    
    public class ConcreteFactory2 extends AbstractFactory {
        AbstractProductA createProductA() {
            return new ProductA2();
        }
    
        AbstractProductB createProductB() {
            return new ProductB2();
        }
    }
    
    public class Client {
        public static void main(String[] args) {
            AbstractFactory abstractFactory = new ConcreteFactory1();
            AbstractProductA productA = abstractFactory.createProductA();
            AbstractProductB productB = abstractFactory.createProductB();
    // do something with productA and productB
        }
    }
  • 相关阅读:
    Python之路——内置函数
    Python之路——迭代器与生成器
    Python之路——函数
    Python之路——琐碎知识
    oracle 11g ocp 笔记(17)--rman高级功能
    oracle 11g ocp 笔记(16)--使用rman进行恢复
    oracle 11g ocp 笔记(15)--使用rman进行备份
    oracle 11g ocp 笔记(14)--数据库备份和恢复配置
    oracle 11g ocp 笔记(13)--子查询和集合运算符
    oracle 11g ocp 笔记(12)--sql关联
  • 原文地址:https://www.cnblogs.com/strong-FE/p/11656546.html
Copyright © 2011-2022 走看看