设计模式心得

创建型模式

简单工厂模式

由一个基类衍生出由不同参数决定的实例。类似以前写的,在不同的参数判断条件下返回不同的实例。

需要三个角色:工厂、抽象产品、具体产品。
是静态的工厂是因为是工厂内已经对类实例化了,把实例化和对对象的使用分离开来了。

工厂

管理类,回忆下之前单单判责里的LateManger。

抽象产品

所创建的所有对象的父类,或者是公共接口

具体产品

由不同条件控制的实例,但都具有相同的接口或者是父类。创造逻辑放在工厂中。

优点

不需要关心内部运行,只需要提供一个名字和参数就可以获得想要的功能的产品对象,可以按照接口规范来调用产品对象的所有功能(方法)。
构造简单,逻辑简单。实现了对象的解耦。

缺点

  1. 不好维护 含有大量if-else判断条件。当需要加入新的产品的时候需要新增else if
  2. 聚合了抽象类的所有实例,违反了高内聚。工厂如果出事,整个系统都会有影响。
  3. 工厂角色无法基于继承的等级结构。

适用场景

  • 逻辑简单的情况:需要实例化的对象少的时候。
  • 客户不需要知道对象的创建细节,只需要知道传入的参数的时候。

实际应用

①JDK类库中广泛使用了简单工厂模式,如工具类java.text.DateFormat,它用于格式化一个本地日期或者时间。

public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance(int style,Locale
locale);
②Java加密技术
获取不同加密算法的密钥生成器:

KeyGenerator keyGen=KeyGenerator.getInstance(“DESede”);
创建密码器:

Cipher cp=Cipher.getInstance(“DESede”);

工厂模式

比起简单工厂模式,将对产品的实例化放在工厂父类的子类来负责。实际上就是全执行了先抽象类,再继承子类。含有角色:抽象工厂、抽象产品、具体产品、具体工厂。

抽象工厂

抽象产品

具体工厂

具体产品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值