设计模式概述

        前言:

        当下会Java的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握Java中接口或抽象类的应用不是很多,大家经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java的接口或抽象类是真正体现Java思想的核心所在,这些你都将设计模式里领略到它们变幻无穷的魔力。看过很多简历上写着深刻理解面向对象,但是连基本的设计模式都描述不出来,或是说出来的也只是听说过,怎么应用大多数是说不上来的。如果说是初学者真没必要学,内力不足,没办法领略其中奥妙,如果是入行都5以上了
那最好还是应该会使用一些基本的设计模式,不然整天喊着高内聚、低耦合及可维护性,可扩展性,重 用性,灵活性等如何实现呢,大厂面试官问你在实际项目中使用过什么设计模式,怎样使用的,解决了什么问题,又怎么回答呢?

  •  设计模式在软件中的地位

       面向对象(oo)=>功能模块[设计模式+(算法+数据结构)]=>框架[使用到多种设计模式]=>架构 [服务器集群]

      设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计 (OOA/D)的精要”

目录

一、设计模式的目的

二、设计模式七大原则

三、设计模式的表示方法-UML类图

3.1、类图—依赖关系(Dependence)

3.2、类图—泛化关系(generalization)

3.3、类图—实现关系(Implementation)

3.4、类图—关联关系(Association)

3.5、类图—聚合关系(Aggregation)

3.6、类图—组合关系(Composition)

四、设计模式类型

五、掌握设计模式的层次


 

一、设计模式的目的

       设计模式要干的事情就是解耦。创建型模式是将创建和使用代码解耦,结构型模式是将不同功能代码解耦,行为型模式是将不同的行为代码解耦。

       官方解释:编写高内聚、低耦合及可维护性,可扩展性,重 用性,灵活性高的代码;

       对程序员而言:深入理解面向对象;深入理解开源代码;编写高内聚、低耦合及可维护性,可扩展性,重 用性,灵活性高的代码;编写属于自己的框架;帮助自己早日成为技术大牛。。。。。。

二、设计模式七大原则

       设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础

        1、单一职责原则(通俗讲:一个类只负责一项职责,一个方法只负责一个功能或行为)
        2、 接口隔离原则(类实现的接口不应该有无用的方法,如果有接口进行拆分)
        3 、依赖倒转(倒置)原则(实质面向接口编程,高层模块不应该依赖低层模块,而是依赖抽象(比如控制层不是调用服务层的实现类而是调用服务层的接口))
        4 、里氏替换原则(继承,所有引用基类的地方必须能透明地使用其子类的对象,在适当的情况下,可以通过聚合,组合,依赖 来解决问题。)
        5 、开闭原则(通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化)
        6 、迪米特法则(最少知道原则,一个对象应该对其他对象保持最少的了解 )
        7、合成复用原则(尽量使用合成
/聚合的方式,而不是使用继承)

三、设计模式的表示方法-UML类图

3.1、类图依赖关系(Dependence

public class Programmer{
    public void work(Computer computer) {
        
    }
}

3.2、类图泛化关系(generalization

 
泛化关系实际上就是继承关系,他是 依赖关系的特例

3.3、类图实现关系(Implementation

 
实现关系实际上就是 A 类实现 B 接口,他是 依赖关系的特例

 

3.4、类图关联关系(Association

 
关联关系实际上就是 类与类之间的联系,他是依赖关系的特例 关联具有 导航性 :即双向关系或单向关系

3.5、类图聚合关系(Aggregation

 

聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开聚 合关系是关联关系的特例,所以他具有关联的导航性与多重性。

用 Java 代码表示大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以有多只大雁:

public class WildGooseAggregate {
    private List<WildGoose> wideGooses;
}

 

3.6、类图组合关系(Composition

 

组合关系:也是整体与部分的关系,但是整体与部分不可以分开

四、设计模式类型

 

1) 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。
2) 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享 元模式、代理模式。
3) 行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者 模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模 式、策略模式、职责链模式(责任链模式)。
 

五、掌握设计模式的层次

第1 层:菜鸟级,听说过什么是设计模式 ;
 
2 层:初级、有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道;
 
3 层:中级、学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式挺好用的;
 
4 层:高手级、阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好 处;
 
5 层:大师级、代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写了出 来。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值