根据模式是用来完成什么工作来划分,可分为:创建型模式、结构型模式和行为型模式,共3种。
1.创建型模式:用于描述"如何创建对象",特点是"将对象的创建与使用分离"。包括:单例、原形、抽象工厂、工厂方法、建造者等5种模式
2.结构型模式:用于描述如何将类或对象按某种布局构建更大的结构。包括:代理、适配器、桥接、装饰、外观、享元、组合等7种结构型模式
3.行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。 包括:模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。
1.开闭原则:软件实体应当对扩展开发,对修改关闭。 【纬度:拓展】
2.里式替换原则:继承必须确保超类所拥有的性质在子类中任然成立。通俗讲:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类方法。 【纬度:父与子】
3.依赖倒置原则:抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:面向接口编程,不要面向实现编程。 【纬度:父与子】
4.单一职责原则:一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。通俗讲:以类为单元的实体,职责要单一。【纬度:个体】
5.接口隔离原则:客户端不应该被迫依赖它不使用的方法,尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。 【纬度:父与子】
6.迪米特法则:如果两个实体无须直接通信,那么就不应该发生直接的相互调用,可通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立。【纬度:个体之间】
7.合成复用原则:要求在软件复用是,尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。【纬度:个体之间】
其实,软件设计7原则的本质就是"原子化,不可再分",在任何纬度尽量保持单元功能模块最小化。无非是从7个纬度来阐述其应用场景。
创建型模式
指一个类只有一个实例,切该类能自行创建这个实力的一种模式。
应用实例:
优点:
缺点: 没有接口、不能继承
是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程。
应用实例:
优点:
缺点:
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
应用实例
缺点:
结构型模式
一个类代表另一个类的功能,以便向外界提供功能接口
应用实例:
1.火车票代售点
2.孙悟空变高翠兰
3.房产中介、红娘
4.spring aop(Aspect Oriented Programming)
优点:
缺点:
1.增加了代理,等于说多了一个第三方,可能会造成请求处理的速度变慢
2.实现代理模式需要额外的工作,有些代理模式的实现非常复杂
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类能一起工作。
应用实例:
优点:
缺点:
将抽象部分与实现部分分离,使它们都可以独立变化
应用实例:
优点:
缺点: 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程
向一个现有的对象添加新功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。
应用实例:
优点:
装饰类和被装饰类可以独立发展,不会相互耦合。装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:
多层装饰比较复杂
隐藏系统复杂度,并向客户端提供了一个客户端可以访问的系统的接口。它向现有的系统添加一个接口,来隐藏系统的复杂性。
应用实例:
优点:
缺点: 不符合开闭原则,改东西很麻烦,继承重写都不合适
主要用于减少创建对象的数量,以减少内存占用和提高性能。
应用实例:
优点:
大大减少对象的创建,降低系统的内存,使效率提高。
缺点:
提高系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。
用于把一组相似的对象当做一个单一对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。
应用实例:
优点:
缺点: 在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖导致原则。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。