(图片来源网络,侵删)
软件设计模式是软件开发人员在软件设计和开发过程中软件框架和代码设计的方案。这些方案是软件开发人员经过长时间的试验总结出来的。所以软件设计模式也是一套反复使用的经过分类编目的,提高代码可读性、可扩展性、可复用性和可维护性,提高系统的鲁棒性,实现软件工程化的经验总结。软件设计模式可以提高软件开发人员的思维能力和设计能力,使系统设计更加标准化,大大提高软件开发效率,缩短软件开发周期。设计模式分类设计模式主要分三类,分别为创建型模式、结构型模式和行为型模式。创建型模式提供了各种对象的创建机制,关注对象的创建,主要有单例、创建者、工厂方法、抽象工厂、原型等模式。结构型模式主要关注怎么将对象和类按某种形式组合成更大的结构,同时保持这种结构的灵活性,主要有适配器、代理、装饰器、桥接、享元、组合、外观等模式。行为型模式主要描述类或对象之间怎么分配职责,来相互配合协作共同完成单个对象无法单独完成的任务,主要有模板方法、策略、观察者、责任链、迭代器、备忘录、命令、状态、访问者、中介者、解释器等模式。设计原则单一职责原则对一个类而言,其职责应该只有一个。一个类如果担任的职责过多,其内部耦合性就会变大,一个职责的变化会影响到别的职责。这样的话代码可读性可维护性等就会变差。开闭原则软件程序应该是对扩展开放,对修改关闭。程序需要改变的时候,不能去修改原有的代码,这样程序就具有很强的鲁棒性,代码更模块化且有利于维护扩展,添加新功能或改变原有功能时,代码层是以扩展新代码为主,原有系统不会受影响,测试时也是针对新扩展的部分重点测试,即使出现问题也容易修复。要实现对扩展开放,对修改关闭,就要做好软件设计,使用接口和抽象类,基本保持软件架构稳定,易变的部分通过派生来进行扩展。里氏代换原则里氏代换原则就是任何基类能出现的地方,子类一定也可以出现。也就是说子类可以扩展父类的功能,但是不能改变原有父类的功能,子类继承父类时,除了新添加的方法,尽量不要重写父类的方法。所以子类尽量继承抽象类,而不是具体类,子类的方法重载父类方法时,方法的输入参数要比父类的输入参数更宽松,方法的返回值要比父类更严格或相同。依赖倒置原则依赖倒置原则就是说程序要依赖于抽象接口,不要依赖具体实现,高层模块不应该依赖于低层模块,它们都应该依赖于抽象。其目的是实现解耦,抽象变化概率小,依赖于抽象,即使实现细节一直变化,也不会影响客户端。最小知识原则(迪米特法则)迪米特原则又叫最小知识原则,也就是说一个类应该尽可能减少与其他类的耦合,如果两个类必须交流,尽可能通过第三个类作为中介者交流。也即只和朋友交流,不和陌生人交流。朋友指的是出现在成员变量、成员方法输入输出中的类,而出现在方法内部的类不属于朋友。不应该和这样的类发生关系。最小知识原则可以降低类与类之间的耦合。接口隔离原则用多个专门用途的接口而不使用一个总接口包含所有用途,客户端不应该依赖它不需要的接口。也就是说一个类对另一个类的依赖应该建立在最小的接口上,尽量细化接口,减少接口中的方法。合成复用原则合成复用原则要求在实现代码复用时,尽量先使用组合或聚合等关联关系,其次才考虑继承关系。即将不同的类或模块组件组合在一起创建新的类,而尽量不通过继承已有的类获得需要的功能。合成复用原则使得代码之间关联性小,减少了类之间的紧耦合关系。组合并不完全替代继承,组合用于需求不断变化的场景,或在类中使用其他类功能,但不用继承其他类的方法。继承用于扩展现有类的功能。
0 评论