软件设计模式总结

单一职责原则:一个类应该仅有一个引起他变化的原因,一个职责一个类,但职责没有具体的量化标准

开闭原则:对扩展开放,对修改关闭,抽象化是开闭原则的关键

里氏代换原则:所有引用父类的地方必须能透明地使用其子类的对象(父类能创建子类对象)

依赖倒转原则:指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象

构造注入:构造函数里赋值对象然后调用

设值注入:普通函数里赋值对象然后调用

接口注入:接口里创建对象调用函数,类定义成implements,然后再普通函数里直接调用接口

接口隔离原则:用多个专门的接口,不适用单一的总接口

合成复用原则:尽量通过关联关系(黑箱复用)实现功能,少用继承(白箱复用)

迪米特法则:软件实体应当尽可能少的与其他实体发生相互作用,两个类不必直接通信,那么就不应该发生相互作用,通过第三者转发调用(通过朋友类调用陌生类)

创建型模式

单例模式:实例记得加上static

懒汉模式:函数里判断是否已经创建,

饿汉模式:加载时就将自己实例化

简单工厂模式:专门定义一个工厂类来创建产品类的对象,这些类有共同父类,函数名相同

工厂方法模式:每个产品类都创建一个工厂,这些工厂有一个抽象工厂类,其他不变

抽象工厂模式:不同工厂的产品类有共同父类,每个具体工厂类有一个抽象工厂类

一个工厂只创建一个产品,退化为工厂方法模式,只提供一个工厂,退化为简单工厂模式

原型模式:克隆一个对象,浅克隆(地址相同),深克隆(地址不同)

结构型模式

适配器模式:将一个接口转换为另一个接口

       类适配器模式:客户端调用目标,适配器同时继承目标和适配者(代码中同时使用extend和implements)在目标的同名函数中直接调用适配者的函数

       对象适配器模式:适配器集成目标类,在同名函数中创建对象调用适配者的函数

外观模式:客户端访问外观角色,外观角色在函数中调用具体类,具体类的对象是外观的私有成员,违反开闭原则(引入抽象外观类来解决)

组合模式:适用于树形结构,抽象构件、叶子构件、容器构件,抽象构件既可以是叶子也可以是容器,所以是父类,另外两个是子类,容器构件的操作中要递归调用抽象构件(类图中抽象构件与容器构件聚合关系)

桥接模式:将继承关系转换为关联关系(不考,略)

装饰模式:在不需要创造更多子类的情况下,将对象的功能加以扩展,具体构件和抽象装饰类继承抽象构件,具体装饰类又继承抽象装饰类,(比组合模式多了具体装饰类,抽象装饰类相当于容器但不需要递归调用抽象构件)

代理模式:客户端访问代理,代理和真实类都继承抽象类,代理可以通过自己的函数来选择访问哪些真实类的函数(个人认为如果不是因为有近似的函数,去掉抽象类就算是只有一个具体类的外观模式了)

行为型模式

观察者模式:具体目标类继承目标类,函数中调用观察者的更新函数,改变观察者数量

策略模式:环境类调用抽象策略类来设置具体策略,然后在另一个函数中直接调用同名策略,

具体策略类都是用这个同名函数(类似于简单工厂模式,不是返回对象而是直接调用)

迭代器模式:提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标。迭代器负责进行游标的操作,具体聚合类相当于工厂方法模式中的工厂来返回迭代器的对象,只不过聚合类里有聚合对象列表作为私有成员。

附录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值