java常用设计模式以及场景使用及代码实现-系列(大全)

1.单例模式详解:http://t.csdn.cn/7bZIE

背景

设计模式在面试中总是不能很好的回答出来,所以开一个专题,将每一个设计模式都深挖剖析,理解透彻。持续更新,欢迎讨论指点。

定义

设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。设计模式并不是固定的一套代码,而是针对某一特定问题的具体解决思路与方案。可以认为是一种最佳实践,因为他是无数软件开发人员经过长时间的实践总结出来的。

设计模式分类

设计模式分为三种类型,共23种。后续会针对这23种进行详解,红色的标识已整理并发布了文章,可以在文章开头点击链接进行跳转学习

创建型模式单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

六大原则

1、开闭原则(Open Close Principle)

即:对扩展开放,对修改关闭

也就是如果在原有系统里面想要拓展一个类型的时候,不去修改原有代码,易于维护和升级

ps:商场支付支持微信、支付宝。现在想要增加一个银联支付,不是去在原有代码里面增加if..else分支,而是通过创建一个新的类(银联支付类)进行管理。当然,原有的微信、支付宝肯定也不是通过if..else进行实现的。

2、里氏代换原则(Liskov Substitution Principle)

即:如果将一个父类在程序中替换成他的子类,该程序不会发生异常.

也就是子类可以扩展父类的功能,但是不能改变父类原有的功能(尽量不要重写父类方法),优点代码重用、属性共享。缺点:耦合度相对较高,如果父类一个字段的类型改变,则需要考虑子类使用该字段的场景中是否需要处理,可能会造成大量的代码重构。

3、依赖倒转原则(Dependence Inversion Principle)

即:依赖抽象(接口)而不是依赖细节(实现类)

也就是面向接口开发,类与类之间减少直接依赖,而是通过接口和实现类进行关联。

ps:用户需要通过短信发送通知,如果用户类直接操作短信类,则在新加一个微信的时候就需要再次修改用户类。而如果用户是调用一个接口进行操作短信,则我们可以直接在接口中增加微信通道,同时这个接口也可以供其他类进行调用。

4、接口隔离原则(Interface Segregation Principle)

即:使用多个隔离的接口,比使用单个接口要好

降低类之间的耦合度,降低依赖

5、迪米特法则(最少知道原则)(Demeter Principle)

即:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立

6、合成复用原则(Composite Reuse Principle)

即:要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

它与里氏替换原则并不冲突,相辅相成,都是开闭原则的具体体现。也就是A类想要使用B类的熟悉,可以将B类作为A类的属性,这样B类中如果有字段类型等需要修改的时候,会比里氏替换原则带来的影响更小。

你可能感兴趣的:(设计模式,java,设计模式,开发语言)