- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品文档
精品文档
PAGE
PAGE90
精品文档
PAGE
精品文档
Java开发中的23种设计模式详解
一、设计模式的分类
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模
式。
结构型模式,共七种:适配器模式、装修器模式、代理模式、外观模式、桥接模式、组合
模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、察看者模式、迭代子模式、责任链模
式、命令模式、备忘录模式、状态模式、接见者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。用一个图片来整体描绘一下:
.
精品文档
二、设计模式的六大原则
1、开闭原则( OpenClosePrinciple )
开闭原则就是说 对扩展开放,对改正封闭 。在程序需要进行拓展的时候,不能去改正原有
的代码,实现一个热插拔的效果。所以一句话归纳就是:为了使程序的扩展性好,易于维
护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后边的详细设计中我们会
提到这点。
2、里氏代换原则( LiskovSubstitutionPrinciple )
里氏代换原则(LiskovSubstitutionPrincipleLSP) 面向对象设计的基来源则之一。 里氏代
换原则中说,任何基类能够出现的地方,子类一定能够出现。 LSP是继承复用的基石,只
.
精品文档
有当衍生类能够替换掉基类,软件单位的功能不受到影响时,基类才能真实被复用,而衍
生类也能够在基类的基础上增加新的行为。里氏代换原则是对 “开-闭”原则的补充。实现 “开
-闭”原则的重点步骤就是抽象化。而基类与子类的继承关系就是抽象化的详细实现,所以
里氏代换原则是对实现抽象化的详细步骤的规范。 ——FromBaidu 百科
3、依靠倒转原则( DependenceInversionPrinciple )
这个是开闭原则的基础,详细内容:真对接口编程,依靠于抽象而不依靠于详细。
4、接口隔绝原则( InterfaceSegregationPrinciple )
这个原则的意思是:使用多个隔绝的接口,比使用单个接口要好。仍是一个降低类之间的
耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件 架
构出发,为了升级和维护方便。所以上文中多次出现:降低依靠,降低耦合。
5、迪米特法例(最少知道原则)( DemeterPrinciple )
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,
使得系统功能模块相对独立。
6、合成复用原则( CompositeReusePrinciple )
原则是尽量使用合成 /聚合的方式,而不是使用继承。
三、Java的23中设计模式
从这一块开始,我们详尽介绍 Java中23种设计模式的观点,应用场景等情况,并结合他
们的特点及设计模式的原则进行剖析。
1、工厂方法模式( FactoryMethod )
工厂方法模式分为三种:
11、普通工厂模式,就是成立一个工厂类,对实现了同一接口的一些类进行实例的创建。
首先看下关系图:
举比如下:(我们举一个发送邮件和短信的例子)
首先,创建二者的共同接口:
.
精品文档
[java] viewplaincopy
1. public interface Sender{
2. public void Send();
}
其次,创建实现类:
[java] viewplaincopy
4. public class MailSender implements Sender{
@Override
6.
public
voidSend(){
7.
System.out.println(
thisismailsender!
);
}
}
[java] viewplaincopy
10. public class SmsSender implements Sender{
11.
@Override
13.
public
voidSend(){
14.
System.out.println(
thisissmssender!
);
}
}
最后,建工厂类:
.
精品文档
[java]
viewplaincopy
17.
public
class
SendFactory{
18.
19.
public
Senderproduce(Stringtype){
20.
if
(
mail
.equals(type)){
21.
return
newMailSender();
22.
}
else
if(
sms
.equals(type)){
23.
return
newSmsSender();
24.
}
else
{
25.
System.
您可能关注的文档
最近下载
- 【备战25年高考数学】解答题07 6类新定义答题模板(解析版).docx VIP
- (完整)部编版五年级上册语文课堂作业本答案 .pdf VIP
- 化学-辽宁省名校联盟2024年高一10月份联合考试试题和答案.docx VIP
- 2025年国开(中央电大)行管专科《行政组织学》网上形考任务试题及答案_不确定精品.pdf VIP
- 消防救援队伍条令法规授课.pptx
- 2024 IMT-2030(6G)推进组白皮书 -6G分布式自治网络架构和关键技术研究.docx
- 2025年天津市专业技术人员公需考试试题-数字技术领域新职业——大数据应用驱动智能未来.docx VIP
- 广西北海市名校2024-2025学年高一上学期期中检测英语试题(含答案).docx VIP
- 自然地理学(伍光和)课后习题答案.doc VIP
- 食品工程原理试题思考题与习题及答案.doc VIP
文档评论(0)