设计模式之创建型模式

心已入冬 提交于 2020-01-25 01:28:23

1.单例模式
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点
实现:一个类的对象的产生是由类构造函数来完成的,如果想限制对象的产生,一个办法就是将构造函数变为私有的(至少是受保护的),使得外面的类不能通过引用来产生对象;同时为了保证类的可用性,就必须提供一个自己的对象以及访问这个对象的静态方法

放一个类图直观描述
在这里插入图片描述
实现方式:
饿汉式
在这里插入图片描述
懒汉式在这里插入图片描述
2.工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
定义:主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的

a.简单工厂模式
定义:简单工厂模式又称静态工厂方法模式,是工厂方法模式的一种特例,两者归为一类。它存在的目的很简单:定义一个用于创建对象的接口
模式组成部分:

  1. 工厂类角色:用于商业逻辑和判断逻辑,由一个具体类实现
  2. 抽象产品角色:一般是具体产品继承的父类或者实现的接口,由接口或者抽象类实现
  3. 具体产品角色:工厂类所创建的对象就是此角色的实例,由一个具体类实现
    在这里插入图片描述
    模式实例
    在这里插入图片描述
    工厂方法模式
    定义:去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担
    实现:使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“上帝类”,分担了对象承受的压力,使得结构变得灵活起来
    模式组成部分:
    1.抽象工厂角色: 是具体工厂角色必须实现的接口或者必须继承的父类,由抽象类或者接口来实现
    2.具体工厂角色:包含具体业务逻辑相关代码,由应用程序调用以创建对应的具体
    产品的对象
    3.抽象产品角色:是具体产品继承的父类或者是实现的接口,由抽象类或者接口来实现
    4.具体产品角色:具体工厂角色所创建的对象就是此角色的实例,由具体的类来实现
    类图分析
    在这里插入图片描述
    模式实例
    在这里插入图片描述
    在这里插入图片描述
    抽象工厂模式
    与工厂方法模式的区别就在于需要创建对象的复杂程度上,而且最为抽象,最具一般性
    抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象
    而且使用抽象工厂模式还要满足一下条件:
  4. 系统中有多个产品族,而系统一次只可能消费其中一族产品。
  5. 同属于同一个产品族的产品以其使用。
    在这里插入图片描述
    原型模式
    定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,在 Java 中提供了 clone()方法来实现对象的克隆
    模式结构:
    1.客户角色:让一个原型克隆自己来得到一个新对象
  1. 抽象原型角色:实现了自己的 clone 方法,扮演这种角色的类通常是抽象类,且它具有
    许多具体的子类
  2. 具体原型角色:被复制的对象,为抽象原型角色的具体子类

类图分析
在这里插入图片描述
按照定义客户角色不仅要负责使用对象,而且还要负责对象原型的生成和克隆,这样会造成角色分工不明确,所以我们把对象原型生成和克隆功能单拿出来放到一个原型管理器中(ProtoManager)

实现:要保存一个原型对象的清单,我们可以使用一个 HashMap 来实现,使原型对象和它的名字相对应;原型管理器只需要一个就够了,所以可以使用单例模式来实现控制;实现得到、注册、删除原型对象的功能只是对 HashMap 的对应操作而已
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!