设计模式
2025-12-04 17:22:21 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
设计模式分类
创建型模式
工厂方法模式
工厂方法模式概述
工厂方法模式是一种创建型设计模式,用于将对象的创建委托给子类来处理。它定义了一个用于创建对象的接口,但将具体的对象创建推迟到子类中实现。这样可以在不改变客户端代码的情况下,通过添加新的子类来创建不同类型的对象。
工厂方法模式提供了一种松耦合的方式来创建对象,使得客户端代码与具体对象的创建过程解耦,从而提高了代码的可扩展性和可维护性。
工厂方法模式结构
抽象产品(Product)
具体产品(ConcreteProduct)
抽象工厂(Creator)
具体工厂(ConcreteCreator)
工厂方法模式应用场景
当一个类不知道它所必须创建的对象的类时
当一个类希望由它的子类来指定所创建的对象时
当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化时
工厂方法模式优点
符合开闭原则,增加新的产品时无需修改已有代码,只需添加对应产品的具体工厂类
符合单一职责原则,每个具体工厂类只负责创建一个具体产品
符合依赖倒置原则,客户端只依赖于抽象工厂和抽象产品,不依赖于具体工厂和具体产品
工厂方法模式缺点
每增加一个具体产品类,就需要增加一个对应的具体工厂类,导致类的个数增加,增加了系统的复杂度
工厂方法模式与简单工厂模式的区别
简单工厂模式只有一个具体工厂类,负责创建所有的产品对象,违反了开闭原则
工厂方法模式通过让子类决定创建对象的方式,解决了简单工厂模式的缺点,符合开闭原则
抽象工厂模式
单例模式
建造者模式
原型模式
- 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过实例化类来创建对象。
-- 原型模式的核心思想是通过克隆已有对象来创建新的对象,而不是通过创建新的对象实例。
-- 原型模式适用于创建复杂的对象,或者创建成本较高的对象,可以提高创建对象的效率。
-- 原型模式涉及到两个角色:原型(Prototype)和具体原型(Concrete Prototype)。
- 原型(Prototype)是一个抽象类或接口,声明了克隆方法。
- 具体原型(Concrete Prototype)是原型的具体实现,实现了克隆方法。
- 原型模式的实现方式有两种:浅克隆和深克隆。
-- 浅克隆只复制对象的基本数据类型的字段,而引用类型的字段仍然指向相同的对象。
-- 深克隆会复制对象的所有字段,包括引用类型的字段,每个字段都会创建一个新的对象。
- 原型模式的优点:
-- 可以动态添加或删除原型对象。
-- 可以改变对象的类型。
-- 可以更方便地创建复杂对象。
- 原型模式的缺点:
-- 克隆对象时需要对每个字段进行复制操作,如果字段较多或者字段之间存在相互引用,可能会导致克隆过程较为复杂。
-- 如果克隆的对象包含循环引用,可能会导致栈溢出。
- 原型模式的适用场景:
-- 当对象的创建过程比较复杂,或者创建成本较高时,可以使用原型模式来复制已有对象,从而提高创建对象的效率。
-- 当需要动态地添加或删除对象时,可以使用原型模式来创建新的对象。
-- 当需要改变对象的类型时,可以使用原型模式来创建具有不同类型的对象。
- 相关的设计模式:
-- 工厂方法模式:工厂方法模式是通过定义一个创建对象的接口,由子类决定实例化的类是哪一个,而原型模式是通过复制已有对象来创建新的对象。
-- 建造者模式:建造者模式是用于创建复杂对象的一种创建型设计模式,它将一个复杂对象的构建过程与其表示分离,而原型模式是通过复制已有对象来创建新的对象。
- 参考资料:
--《设计模式:可复用面向对象软件的基础》(GoF)
-- https://refactoringguru.cn/design-patterns/prototype
结构型模式
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式
行为型模式
策略模式
模板方法模式
观察者模式
迭代器模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式
设计模式介绍
设计模式是解决软件设计中常见问题的可复用解决方案。它们提供了一种通用的设计语言,使开发人员能够更好地沟通和理解设计问题,并以一致的方式解决这些问题。
设计模式的优点
提高代码的可读性和可维护性
促进代码重用
增加代码的灵活性和扩展性
提高软件的可靠性和稳定性
提高团队合作效率
设计模式的应用场景
当需要解决一类具有相似问题的设计问题时
当需要提高代码的可维护性和可读性时
当需要增加代码的灵活性和扩展性时
当需要提高软件的可靠性和稳定性时
当需要提高团队合作效率时
设计模式的学习资源
书籍
《设计模式:可复用面向对象软件的基础》
《Head First设计模式》
《大话设计模式》
《设计模式之禅》
在线教程
https://refactoringguru.cn/design-patterns
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
https://www.tutorialspoint.com/design_pattern/index.htm
博客和论坛
https://www.cnblogs.com/TomXu/archive/2011/11/20/2253139.html
https://www.zhihu.com/question/41100863/answer/900938474
https://www.jianshu.com/p/3f9733fda4fa
总结
设计模式是软件设计中常用的解决方案,它们提供了一种通用的设计语言,帮助开发人员更好地沟通和解决设计问题。通过使用设计模式,可以提高代码的可读性和可维护性,促进代码重用,增加代码的灵活性和扩展性,提高软件的可靠性和稳定性,提高团队合作效率。学习设计模式可以通过阅读相关书籍、在线教程以及参与博客和论坛的讨论来获取。
0 条评论
下一页