概述
第一种:Adapter设计模式
Adapter设计模式
这一设计模式存在的必要性:为利用已有代码而存在。已有的代码能够提供相似的功能,但是接口不满足需求,这个时候就采用“适应器设计模式”,这样的好处在于不必因为修改原有代码而增加测试的时间,只要测试Adapter就可以,不用测试adaptee。
代码复用的理念上有区别,对已有代码“封装”而不是“修改”。
这一设计模式拥有2中实现方法,一种是采用将Target设计成接口,一种是将Target设计成类。前者采用继承adaptee并实现Target的策略;后者采用继承Target并且拥有adaptee的模式。前者称为“类适配器模式”,后者称为“对象适配器模式”,本质上是一种委托。
直接功效:填补具有不同API的两个雷之间的缝隙。
第二种:Factory Method 设计模式
这一设计模式存在的必要性:框架的复用提供了可能,不需要修改“框架”,只变换“具体加工”就可以实现“抽象算法”的多次复用。
第三种:模板设计模式
实际上工厂设计模式的一部分,主要作用是实现“流程”和“具体处理”的解耦。组成模板的方法被定义在父类中,这些方法是抽象的,所以只查看父类的代码是无法知道这些方法会进行什么样的操作的。
模板模式的角色只有:抽象类和具体类。具体类继承抽象类,实现抽象类中的抽象方法。使用时要将生成的子类的实例保存在父类的变量中,这样的好处是什么?即使没有用instanceof等指定子类的种类,程序也能正常工作。无论在父类类型的变量中保存哪个子类的实例,程序都可以正常工作,这种原则被称为“里氏替换原则”
第四种:迭代器设计模式
迭代器模式是什么?
答:迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
迭代器模式用在什么地方?
方便地遍历某个集合,不必知道集合内部结构。
迭代器的核心思想是什么?
迭代器模式应用的场景和意义:访问你个聚合对象的内容二无需暴露它的内部表示,支持对聚合对象的多种遍历,
为遍历不同的聚合结构提供一个统一的接口。
为什么要使用迭代器?
直接使用已经实现的方法遍历集合中的元素。
迭代器的接口与类之间的关系是什么?
(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法
next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),
(2)具体迭代器角色(Concrete Iterator):实现迭代器接口中定义的方法,完成集合的迭代。
(3)容器角色(Aggregate): 一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,
List接口,Set接口等
(4)具体容器角色(ConcreteAggregate):就是抽象容器的具体实现类,比如List接口的
有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等。
重点需要掌握的知识: Iterator模式的类图; 模式中的角色 4大角色
喜欢只使用具体的类来解决问题不是一个好习惯,这样造成代码的复用率很差,一旦一个类进行了修改,其他的类就必须做出修改
一个好的解决方案是引入接口和抽象类。他们的出现可以有效弱化类之间的耦合。
设计模式的作用就是帮助我们编写可以复用的类 。
举个例子:
最后
以上就是现代红牛为你收集整理的23种设计模式深度解读的全部内容,希望文章能够帮你解决23种设计模式深度解读所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复