Appearance
设计模式
设计模式分类
创建型模式(Creational):关注对象的实例化过程,包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。 结构型模式(Structural):关注对象之间的组合方式,以达到构建更大结构的目标。这些模式帮助你定义对象之间的关系,从而实现更大的结构。常见的结构型模式有适配器模式、装饰器模式、代理模式等。 行为型模式(Behavioral):关注对象之间的通信方式,以及如何合作共同完成任务。这些模式涉及到对象之间的交互、责任分配等。常见的行为型模式有观察者模式、策略模式、命令模式等。
设计模式的要素
模式名称:每个设计模式都有一个简洁的名称,用于描述问题、解决方案和效果。这个名称有助于在交流中快速指代模式。 问题:描述了在什么情况下应该考虑使用特定的设计模式。问题部分阐述了该模式试图解决的具体设计难题。 解决方案:解决方案部分提供了一个详细的设计指南,描述了如何组织类、对象以及它们之间的关系,以解决特定问题。这包括了每个角色的职责、协作方式等。 效果:描述了模式应用的效果及使用模式应权衡的问题。
设计模式原则
单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。这意味着每个类应该只负责一个功能或职责,以降低类的复杂性和耦合度。
开闭原则(Open-Closed Principle, OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着在添加新功能时,应该通过扩展已有类或模块的方式来实现,而不是直接修改已有的代码。
里氏替换原则(Liskov Substitution Principle, LSP):子类对象应该能够替换其父类对象,而不破坏程序的正确性。这意味着子类应该能够继承父类的接口,并实现父类的行为,同时保持父类的行为不变。
接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户依赖于它们不使用的方法。这意味着接口应该尽可能小,并且只包含客户真正需要的方法。
依赖倒置原则(Dependency Inversion Principle, DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。这意味着应该通过依赖注入或接口来降低模块之间的耦合度。