如何保证一个类只有一个实例并且这个实例易于被访问?

(1)全局变量:可以确保对象随时都可以被访问,但不能防止创建多个对象

(2) 让类自身负责创建和保存它的唯一实例,并保证不能创建其他实例,它还提供一个访问该实例的方法

 

单例模式的定义

单例模式:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

要点: 某个类只能有一个实例 必须自行创建这个实例 必须自行向整个系统提供这个实例

 

工厂方法模式的定义

工厂方法模式:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。

 

工厂方法模式的结构

工厂方法模式包含以下4个角色:

  1.Product(抽象产品)

  2.ConcreteProduct(具体产品)

  3.Factory(抽象工厂)

  4.ConcreteFactory(具体工厂)

 

模式优点

工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节

能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部

在系统中加入新产品时,完全符合开闭原则

 

模式缺点

系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销

增加了系统的抽象性和理解难度

 

在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此又被称为静态工厂方法(Static Factory Method)模式

 

要点:如果需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节

 

工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂

 

客户端只知道传入工厂类的参数,对于如何创建对象并不关心

posted on 2021-09-06 16:13  Cxy小白  阅读(28)  评论(0编辑  收藏  举报