![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
谈谈的心情
有梦想,去追逐.......
展开
-
设计模式六大原则(2):开闭原则
定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭的。即对扩展开放,对修改关闭。 场景:在软件的生命周期内,产品需要不断的升级、维护,没有一个产品从第一个版本开发完就不需要再变化了,除非在下个版本诞生之前它已经终止了。而产品的升级需要修改原来的代码,这可能会给原来的代码中引入错误,影响原有的软件模块。 解决方案:遵守开闭原则。程序一旦开发完成,程序中一个类的实现只...原创 2018-08-22 10:15:11 · 384 阅读 · 0 评论 -
设计模式六大原则(5):接口隔离原则
定义:客户端不应该依赖它不需要的接口。另外一种定义:类间的依赖关系应该建立在最小的接口上。 场景:在接口I中定义多个方法(假如A,B,C,D),类C1通过实现接口I来扩展自己需要的方法A、B;类C2通过实现接口I来扩展自己需要的方法C、D;那么接口I对于类C1和类C2来说不是最小接口,则类C1和类C2必须去实现他们不需要的方法。 解决方案:采用接口隔离原则。将臃肿的接口I拆分为独立的几个接口,...原创 2018-08-27 09:49:46 · 401 阅读 · 0 评论 -
设计模式六大原则(3):里氏替换原则
定义:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。这种描述不太好理解,里氏替换原则还有第二种定义:所有引用基类的地方必须能透明地使用其子类的对象。 场景:有一功能F1(会飞),由类A完成。现需要将功能F1进行扩展,扩展后的功能为F(...原创 2018-08-23 09:42:29 · 1015 阅读 · 0 评论 -
设计模式六大原则(4):依赖倒置原则
定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 场景:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:遵循依赖倒置原则,将类A修改为依赖接口I,类B和类C各自实现接口I,类A...原创 2018-08-24 09:28:52 · 432 阅读 · 0 评论 -
设计模式六大原则(1):单一职责原则
定义:就一个类而言,应该仅有一个引起它变化的原因。简单来说,即一个类只负责一项职责。 场景:类C负责两个不同的职责:职责T1,职责T2,当职责T1的需求发生改变而需要修改类C时,有可能导致原本运行正常的职责T2出现错误。也就是说职责T1和T2被耦合在了一起。 解决方案:使用单一职责原则。分别建立两个类C1、C2,C1负责职责T1的功能,C2负责职责T2的功能。这样,当修改C1时,只会改变职责T...原创 2018-08-21 16:22:55 · 321 阅读 · 0 评论 -
设计模式六大原则(6):迪米特原则
定义:一个对象应该对其他对象有最少的了解。 场景:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:遵循迪米特原则,尽量降低类与类之间的耦合。 迪米特原则英文全称为Law of Demeter,简称LOD,又叫最少知道原则,还有一个英文解释是:Only talk to your immedate friends,翻译过来就是:只与直接的朋友通信。什么...原创 2018-08-29 09:55:50 · 364 阅读 · 0 评论 -
Android设计模式1--原型模式
1. 定义 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 2. 使用场景 资源优化场景:类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。 性能和安全要求的场景:通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 一个对象多个修改者的场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考...原创 2019-04-01 14:15:30 · 305 阅读 · 0 评论 -
Android设计模式2--工厂方法模式
1. 定义 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 2. 使用场景 复杂对象的生成,代替new的方式来屏蔽产品类的创建过程:需要一种产品,而不想知道也不需要知道工厂是如何生产出来的,只需要知道具体对应的工厂就行。 产品的替换需要灵活、可扩展性高的场合。 测试驱动开发的框架中,往往通过工厂方法把对象虚拟出来(用得比较...原创 2019-04-12 10:05:51 · 231 阅读 · 0 评论