1.单例模式(Singleton):只存在一个实例而对外提供公开的访问点
(1)NumnerFormat只有一个实例
(2)Runtime(JVM运行于系统之上,由Runtime可以获取系统的信息):而Runtime是单例的,饿汉式
0.静态工厂(Factory):根据传入方法的参数来构造实例,对外隐藏创建实例的细节
(静态工厂不属于23种设计模式,但此处列举以便理解)
(1)Integer.valueOf() Integer类中根据普通类型的值来创建包装类Integer
(2)Class.forName() 反射中根据全限定类名来创建实例
2.工厂方法模式(Factory Method):抽象工厂,抽象产品实现松耦合,实现类决定产出什么产品
Collection.iterator 集合Collection实现了Iteatorable接口,其内部有一个内部迭代器类,可通过iterator()方法获取到迭代器(这一方法正是那个工厂方法)
集合Collection代表工厂,迭代器Iterator代表产品
Collection代表抽象工厂接口,生产产品的方法为Iterator(),返回抽象的产品接口 ,而具体的集合类实现此接口(具体的List,具体的Set等实体类),生产的Iterator是产品接口的实现类具体Iterator生产什么具体的产品由实现什么具体工厂
3.抽象工厂模式(Abstract Factory):抽象工厂接口生产的产品有多种
(1)java.sql包中Connection创建Statement
JDBC的使用中,加载驱动后使用DriverManager.gerConnection获取的是Connection的实例,Connection是连接接口,而后由Connection创建用以执行不同sql语句的Statement,预编译PreparedStatement和用以执行存储过程的CallableStatement.这时Connection相当于抽象工厂接口,可生产多种抽象产品。
Connection就成为了抽象工厂,而Statement,PreparedStatement,CallableStatemen是多种抽象产品,抽象工厂可生产多种抽象产品,而对应的实例工厂MysqlCollectionImpl生产实力产品Impl
4.建造者模式(Builder):构造一个实例需要大量的工作,所以将构建逻辑提到了单独的类中
(1)解析XML时构建总的document需要遍历所有节点,包括注释文本等 ,建造过程繁琐,就就将它分离出来
5.原型模式(Prototype):克隆,深拷贝,浅拷贝
(1)Object.clone / Cloneable
参考:https://blog.csdn.net/qq_38311489/article/details/89439835