欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-07-30
上篇目录:

前言1.创建型

1.1 简单工厂1.2 工厂方法

VS简单工厂 1.3 抽象工厂1.4 单例模式

懒汉饿汉 1.5 原型模式1.6 建造者模式最后 前言

系列文章参考了《大话设计模式》和《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 单例模式

单例:一个类只有一个对象

实现方法:
保证对象不能被创建,对外提供访问该实例方法,故采用私有构造方法和GetInstance方法

一个锁两个判断:
第一个 判断是否初始化
第二个 防止多线程进入
第三个 避免双线程都执行到锁位置,一个线程进入后创建实例完成后,第二线程依旧创建

代码

客户端代码

好处:
易于控制访问
只需资源初始化一次,提高性能现实生活中的避免超生一样 懒汉

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

类一加载就实例化对象导致提前占用资源
在安卓中的单例应用:创建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(...);...


最后

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。