设计模式花园(一)-概览

设计模式花园(Design Garden)

设计模式花园,通过最常用的实例帮助您快速学习和实践简单但功能强大的23种设计模式。

创建型模式

创建型模式是关于对象实例化的模式。

模式思想场景优缺点
1. 单例模式一个类只有一个实例,并在类中提供一个访问它的全局访问点。解决了资源访问冲突问题、单例对象节约内存提高性能,适合频繁创建和销毁且创建时耗费很多资源的对象。网站计数器、读取配置文件或数据库、工具类等。-
2. 工厂模式创建一个接口和一系列实现该接口的实体类,然后创建一个工厂类,由传入字符串类型判断实例化哪一个实体类。1)日志记录器。选择哪种存储方式:硬盘、远程服务器等。2)数据库访问,选择哪类数据库进行链接。3)设计一个连接服务器的框架,选择哪种协议进行连接。-
2. 抽象工厂模式创建一个抽象工厂类和工厂生产类,根据传入字符串类型判断使用哪种工厂对象,然后工厂类传入字符串类型判断创建哪个类。--
8. 构建器模式构建器模式是使用多个简单对象链式构造一个复杂对象,一般在类中增加一个builder静态类,类中实现各种设置属性的方法。常用于链式形式初始化一个参数很多的对象。--
14. 原型模式原型模式又叫克隆模式,从当前对象克隆一个相同对象。Java内部自带原型模式,Object.clone()。-
结构型模式

结构型模式是关于类和对象组合的模式。

模式思想场景优缺点
5. 外观模式为子系统(子类)提供一个统一的界面(初始化子类,并提供子类方法)。(类似工厂模式,一个提供一个子类对象,一个提供多个子类对象方法)--
6. 组合模式创建一个包含自己对象组的类,构建一个树形的层次结构。--
7. 享元模式提前创建好对象放入池子中,重复利用。数据库连接池、JAVA中的string,如果有则返回,没有则创建一个字符串放入字符串缓存池中。-
10. 适配器模式适配器模式(包装器模式)是将类的接口转化为另一个类的接口。包括:类适配器模式和对象适配器模式。 类适配器是适配器继承类。对象适配器是适配器类构造方法传入原类对象,然后实现目标接口的方法对父类进行改写。我们构造一个人猫适配器,实现人类与喵星人的对话。-
12. 装饰器模式装饰器模式是在不改变原类的情况下,添加新的功能(装饰)。具体做法是创建一个抽象类(装饰类)并传入原有的类,然后重写原有类方法。1)扩展一个类的功能。2)替代继承。-
18. 代理模式代理模式是一个类代表另一个类的功能(继承也可以实现类似的功能,这里通过耦合来代替继承,实现解耦的目的)。买茅台并不一定要去茅台厂买,可以去各种经销店购买。-
19. 桥接模式桥接模式将抽象部分(抽象类)和实现部分(类)分离,二者都可以独立的变化。具体做法是顶层两个抽象类,其中一个抽象类中聚合(构造函数传递)另一个抽象类的实现类,然后创建包含两种概念的对象。--
行为型模式

行为型模式是关于多个类或对象通过协作共同完成一个任务的模式。行为模式包括对象行为模式或类行为模式。

模式思想场景优缺点
4. 策略模式定义多个策略类,策略继承同一个策略接口,Context类方法可以根据传入的策略对象,调用不同的策略对象方法(Context初始化时,传入策略对象,然后调用策略对象方法)。--
9. 模版模式(钩子函数、回调函数)模板模式是提供一个可作为模板的抽象类,具体做法是定义一个包含多个抽象方法和一个方法(作为模板方法)的抽象类,子类按需要实现抽象方法来完成模板方法。类似做菜的步骤,先定一个好一个模板,卖菜、洗菜、煮饭,然后通过子类中对这些步骤进行填充,来达到按需实现做菜整体过程的目的。--
11. 命令模式(Action模式、事务)命令模式是使类继承具备撤销功能的抽象类,从而具有撤销功能。--
13. 备忘录模式保存一个对象当前状态,以便在适当的时候进行恢复。游戏中的存档和读档。-
15. 状态模式状态模式中基于状态决定类的行为。具体做法是我们实现一个状态抽象类/接口,继承或实现的子类分别对应不同的状态,且子类中重写不同的方法。--
16. 观察者模式观察者模式又叫事件处理模式,一个对象的状态发生更改时,会通知所有依赖它的对象并自动更新。PS:钩子函数Hook、Callback、Listener、Observer本质上都是观察者模式。--
17. 责任链模式责任链模式是处理请求的模式,将多个处理器串成一条链,让请求在链上进行传递。报销审批,在自己职责范围中的可以审批,然后扔给下一个审批者。-
20. 迭代器模式迭代器模式是顺序访问对象的各个元素,而又不用暴露对象的内部表示。--
思考题
  1. 状态模式和策略模式的异同点?
  2. 代理模式和装饰器模式的异同点?
  3. 动态代理模式如何实现?
  4. 设计模式中何时用抽象类,何时用接口,二者可以替代使用吗?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值