如何理解这6种常见设计模式?( 二 )
结构图:
本文插图
时序图:
本文插图
工厂模式总结
(1)适用场景
输出的产品是标准品 , 谁来做都可以 。
(2)举例
常见的数据库连接工厂 , SqlSessionFactory , 产品是一个数据库连接 , 至于是oracle提供的 , 还是mysql提供的 , 我并不需要关心 , 因为都能让我通过sql来操作数据 。
(3)注意事项
项目初期 , 软件结构和需求都没有稳定下来时 , 不建议使用此模式 , 因为其劣势也很明显 , 增加了代码的复杂度 , 增加了调用层次 , 增加了内存负担 。 所以要注意防止模式的滥用 。
【如何理解这6种常见设计模式?】(4)简单实现
package FactoryMethod; public class FactoryPattern { public static void main(String[] args) { Factory factory = new ConcreteFactoryA(); Product product = factory.createProduct(); product.use(); } } //抽象产品:提供了产品的接口 interface Product { public void use; } //具体产品A:实现抽象产品中的抽象方法 class ConcreteProductA implements Product { public void use() { System.out.println(''具体产品A显示...''); } } //具体产品B:实现抽象产品中的抽象方法 class ConcreteProductB implements Product { public void use() { System.out.println(''具体产品B显示...''); } } //抽象工厂:提供了厂品的生成方法 interface Factory { public Product createProduct(); } //具体工厂A:实现了厂品的生成方法 class ConcreteFactoryA implements AbstractFactory { public Product createProduct() { System.out.println(''具体工厂A生成-->具体产品A.''); return new ConcreteProductA(); } } //具体工厂B:实现了厂品的生成方法 class ConcreteFactoryB implements AbstractFactory { public Product createProduct() { System.out.println(''具体工厂B生成-->具体产品B.''); return new ConcreteProductB(); } }2 单例模式(Singleton)
韦小宝有7个老婆 , 但是每个都只有他这一个老公 , 他的所有老婆叫老公时 , 指的都是他 , 他就是一个单例 。
单例模式结构
单例模式包含如下角色:
- Singleton:单例
本文插图
时序图:
本文插图
优缺点
- 优点:全局只有一个实例 , 便于统一控制 , 同时减少了系统资源开销 。
- 缺点:没有抽象层 , 扩展困难 。
适合需要做全局统一控制的场景 , 例如:全局唯一的编码生成器 。
注意事项
只对外提供公共的getInstance方法 , 不提供任何公共构造函数 。
简单实现
public class Singleton { private static volatile Singleton instance=null;//保证 instance 在所有线程中同步 private Singleton(){}//private 避免类在外部被实例化 public static synchronized Singleton getInstance() { //getInstance 方法前加同步 if(instance == null) { instance = new Singleton(); } return instance; } }3 装饰模式(Decorator)
大学毕业 , 想要送给室友一个有纪念意义的礼物 , 就找到一张大家的合照 , 在上面写上“永远的兄弟!” , 然后拿去礼品店装了个相框 , 再包上礼盒 。 这里的我和礼品店都是装饰器 , 都没有改变照片本身 , 却都让照片变得更适合作为礼物送人 。
推荐阅读
- 徐峥|徐峥年初被23家电影公司联名“封杀”,上万人签名抵制,现状如何
- 游戏葡萄|七年磨一剑的任天堂,如何用美术诠释游戏?
- 智能城市崛起,看智能化如何定义未来之城
- 萍姐姐调侃体育|郭艾伦如何回应?国产第一后卫之争愈演愈烈,吴前爆发孙铭徽开挂
- 王者荣耀|李小龙皮肤如何搭配才最帅气,这个回城特效绝配,搭配特效秒变传说皮肤!
- 剖析爱奇艺积分体系,如何做留存和转化
- ZAKER生活|在俄避难的斯诺登,结局如何?,7年前曝光美国“棱镜计划”
- 周到|复盘上海德比首回合 上港如何破申花的密集防守
- 晴晴侃游戏|盗贼和狂暴战谁更适合呢,魔兽怀旧服咸鱼剑近战该如何选择
- 王者荣耀|王者荣耀:不知道如何玩好射手?S21赛季全射手出装铭文合集送给你!
