设计模式(上篇:创建型)

这篇博客主要介绍了创建型设计模式,包括简单工厂、工厂方法、抽象工厂、单例模式(懒汉与饿汉)、原型模式和建造者模式。通过实例分析了各类模式的特点和应用场景,如在Android中的应用,并探讨了它们如何提高代码效率,减少资源浪费,遵循设计原则。
摘要由CSDN通过智能技术生成

前言

系列文章参考了《大话设计模式》和《Android源码设计模式》两本书

1.创建型

1.1 简单工厂

  • 用一个单独的类创造实例
    在这里插入图片描述
    \简单工厂模式
    简单工厂类依赖与运算类,加减乘除继承与运算类

1.2 工厂方法

  • 创建一个工厂类接口,让子类决定实现哪个
    在这里插入图片描述

  • 代码:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 缺点: 每加一个产品,就需要加一个产品工厂的类

VS简单工厂

  • 将类的实例延续到子类
  • 符合开放-闭合原则

1.3 抽象工厂

  • 抽象工厂指的是,提供一系列相关或相互依赖对象的接口,无需指定它们具体的类,即不同产品对于不同的具体工厂
    在这里插入图片描述

  • 客户端通过抽象接口操纵实例,低耦合,易更改类别
    但不易增减类别,如数据中的链表

  • 安卓中有如 Activity中的onCreate()方法

public class BaseActivity extends Activity{
	protected void onCreate(Bundle saveInstance){
		super.onCreate(saveInstance);
		setViewContent(new LinearLayout(this));
	}
}

1.4 单例模式

  • 单例:一个类只有一个对象
    在这里插入图片描述

  • 实现方法:
    私有构造方法,通过静态方法构造唯一实例

当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,
如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类
  • 一个锁两个判断:
    第一个 判断是否初始化
    第二个 防止多线程进入
    第三个 避免双线程都执行到锁位置,一个线程进入后创建实例完成后,第二线程依旧创建

  • 代码
    在这里插入图片描述
    客户端代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 好处:
    易于控制访问
    只需资源初始化一次,提高性能

  • 现实生活中的避免超生一样

懒汉

  • 使用时再实例化
  • 存在多线程安全访问问题
  • 懒汉代码有如上双锁里的实例

饿汉

  • 类一加载就实例化对象
  • 导致提前占用资源
    在这里插入图片描述
  • 在安卓中的单例应用:创建ListView
public View getView(int position,View contentView,ViewGroup parent){
	public View itemView;
	if(contentView==null){
		itemView=LayoutInflater.from(mContext).inflate(mLayoutId,null);
		...
	}else{...}
	return itemView;
}

1.5 原型模式

  • 创建对象种类,通过拷贝创建新对象
  • 代码
    (将工作经历克隆出来)
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 特点:
    初始化信息不变,隐藏对象创建
  • 对于深复制clone和浅复制copy:
    所有变量与原来对象相同
    但 深复制 将引用对象的变量指向复制后的新对象

1.6 建造者模式

  • 与装饰者区别:建造过程要求稳定
  • 将建造和表示分离,用户不需要知道具体的建造过程
    建造者模式
    Director构造Builder接口对象,具体Builder继承,产生具体产品
  • 适用于 创建复杂对象,对象内部构造顺序稳定,但内容有复杂变化
  • 代码在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 安卓中的应用:AlertDialog
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builer.setIncon(...);
...

最后

概述了创建型中的 简单工厂模式,工厂方法模式,抽象工厂模式,单例模式,原型模式,建造者模式的概念结构特点及应用,其中抽象工厂,建造者从强耦合到弱耦合入手,单例和原型从提高了代码效率,减少资源浪费入手,遵循依赖倒置,开放-关闭原则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值