![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
hellboy0621
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则
依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象;针对接口编程,不要对实现编程;高层模块不应该依赖底层模块,两个都应该依赖抽象; 抽象不应该依赖细节,细节应该依赖抽象;里氏代换原则一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里,把父类都替换成它的子类,程序的行为没有变化。简单说,子类型必须能够替换掉它们的父...原创 2019-08-03 22:38:12 · 190 阅读 · 0 评论 -
【设计模式系列学习笔记】12、 外观模式 Facade
外观模式Facade,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。为子系统提供统一入口,封装子系统复杂性,便于客户端调用;外观模式,完美的体现了依赖倒转原则和迪米特法则的思想,是非常常用的模式之一;使用场景:设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,数据访问层、业务逻辑层、表示层,层与层之间建立外观...原创 2019-09-10 23:37:03 · 142 阅读 · 0 评论 -
【设计模式系列学习笔记】11、 迪米特法则 Law of Demeter
迪米特法则-Law of Demeter,也叫最小知识原则。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则根本思想:强调了类之间的松耦合;类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及;...原创 2019-09-06 23:41:21 · 186 阅读 · 0 评论 -
【设计模式系列学习笔记】10、 模板方法模式 TemplateMethod
模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。核心:处理步骤在父类中定义好,具体实现延迟到子类中定义;模板方法模式,是通过把不变行为搬移到父类,去除子类中的重复代码来实现它的优势,即提供了一个很好的代码复用平台;当不变和可变的行为在方法中的子类实现中混合在一起的时候,不变的行为就会在子类中重...原创 2019-09-06 12:45:21 · 115 阅读 · 0 评论 -
【设计模式系列学习笔记】9、原型模式 prototype
原型模式prototype,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象;原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节;对于java而言,就是克隆,需要实现Cloneable接口,并覆写clone方法,分为浅克隆和深克隆;clone默认方法,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型的,则复制引用但不复制引用的...原创 2019-09-04 23:55:54 · 118 阅读 · 0 评论 -
【设计模式系列学习笔记】8、工厂方法模式 vs 简单工厂模式
简单工厂模式工厂方法模式简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖;如果增加响应的功能,需要在工厂类中增加逻辑分支,修改原有的类,不仅对扩展也对修改开放了,违背了开放-封闭原则。工厂方法模式 - Factory Method,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...原创 2019-09-04 00:01:55 · 102 阅读 · 0 评论 -
【设计模式系列学习笔记】7、代理模式 - proxy pattern
代理模式核心作用:通过代理,控制对象的访问;可以详细控制访问某个对象的方法,在调用方法前做前置处理,调用方法后做后置处理;代理模式的应用:远程代理,为一个对象在不同的地址空间提供局部代表;这样可以隐藏一个对象存在于不同地址空间的事实; 虚拟代理,根据需要创建开销很大的对象,通过虚拟代理来存放实例化需要很长时间的真实对象;如浏览器加载图片时通过虚拟代理来替代了真实的图片,此时代理存储了...原创 2019-08-28 07:55:06 · 76 阅读 · 0 评论 -
【设计模式系列学习笔记】6、装饰模式
装饰模式 Decorator:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。动态地为一个对象增加新的功能,一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能;使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。装饰模式decorator,也叫包装器模式wrapper;降低系统耦合度,可以动态的增加或删除对象的职责,并...原创 2019-08-26 23:44:04 · 79 阅读 · 0 评论 -
【设计模式系列学习笔记】4、开放-封闭原则
The Open-Closed Principle OCP开放-封闭原则,软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。两个特征:对于扩展开放 Open for extension对于更改封闭 Closed for modification无论模块是多么的‘封闭’,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出...原创 2019-08-02 00:12:45 · 132 阅读 · 0 评论 -
【设计模式系列学习笔记】1、简单工厂模式
如果说数学是思维的体操,那设计模式就是面向对象编程思维的体操;简易计算器类结构图:操作类,定义两个操作数,并声明抽象方法getResult(),具体实现由子类完成;public abstract class Operation { private double numberA; private double numberB; public abstr...原创 2019-07-27 21:57:56 · 107 阅读 · 0 评论 -
【设计模式系列学习笔记】3、单一职责原则
单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责,并把那些职责相互分离。如果能够想到多于一个的动机去改变一个类,那么这个类就鱼油多于一个的职责。...原创 2019-07-31 23:00:57 · 115 阅读 · 0 评论 -
【设计模式系列学习笔记】2、策略模式
策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。使用策略模式,简单实现厂商打折策略抽象类,定义打折抽象方法,让子类具体实现打折逻辑;public abstract class CashSuper { public abstract double acceptCash(double money);}原价...原创 2019-07-31 22:25:32 · 121 阅读 · 0 评论 -
【设计模式系列学习笔记】13、 建造者模式 Builder
Builder是为创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。Product是具体的产品角色;Director是指挥者,构建一个使用Builder接口的对象;建造者模式,主要用于创建一些复杂的对象,这些对象内部构造间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化;建造者...原创 2019-09-12 08:36:48 · 120 阅读 · 0 评论