zoukankan      html  css  js  c++  java
  • 设计模式基础

    设计模式的概念

    ​ 设计模式是:在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案(5点)

    案例

    ​用大家身边的例子来说,比如医药行业,就有自己的设计模式。假设一个人感冒了,到药店买点感冒药来吃,这个感冒药就是设计模式的一个很好体现

    经过验证的:药品上市前,会有大量的验证和实验,以保证药品的安全性

    特定环境下:这些药品是针对人的,不是针对其它动物的

    重复出现的:正是因为感冒会重复出现,研制药品才是有意义的

    特定问题:感冒药只用来解决感冒问题,不能解决其它问题,比如脚痛

    解决方案:药品本身就是个解决方案的具体体现

    ​ 经过上面的比较,你会发现,医药行业对设计模式的体现,一点不逊色于软件行业。事实上,很多行业都有自己的设计模式。就算设计模式本身也不是起源于软件行业,而是起源于建筑业

    设计模式的理解

    1:设计模式是解决某些问题的办法

    2:设计模式不是凭空想出来的,是经验的积累和总结

    3:设计模式并不是一成不变的,而是在不断的发展中

    4:设计模式并不是软件行业独有的,各行各业都有自己的设计模式

    设计模式的组成

    在描述一个设计模式的时候,通常会有如下部分:

    1:模式名称:就是为每个设计模式取个名字,好记忆,也好交流

    2:环境和问题:描述在什么场景下,出现什么样的特定的问题

    3:解决方案:描述如何解决这个问题

    4:效果:描述模式应用的效果,以及可能带来的问题,或者使用中需要权衡的问题

    设计模式的分类

    ​ 为了缩小范围,我们仅讨论Java设计模式,也就是GoF著作《设计模式——可复用面向对象软件的基础》中提到的23个设计模式。对于这23个设计模式的分类,GoF把它们分为三类:

    1:创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例

    ​ 简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)

    ​ 建造者模式(Builder)原型模式(Prototype)单例模式(Singleton)

    2:结构型模式:描述如何组合类和对象以获得更大的结构

    ​ 适配器模式(Adapter)外观模式(Facade)桥接模式(Bridge)装饰器模式(Decorator)

    ​ 代理模式(Proxy)享元模式(Flyweight)组合模式(Composite)

    3:行为型模式:描述算法和对象间职责的分配

    ​ 模板方法模式(Template Method)策略模式(Strategy)命令模式(Command)中介者模(Mediator)

    ​ 观察者模式(Observer)迭代器模式(Iteratior)访问者模式(Visiter)

    ​ 责任链模式(Chain of Responsibility)备忘录模式(Memento)状态模式(State)

    ​ 解释器模式(Interpreter)

    设计模式和面向对象设计原则

    ​ 面向对象的分析设计有很多原则,这些原则大都从思想层面,给我们指出了面向对象分析设计的正确方向,是我们进行面向对象分析设计应该尽力遵守的准则。

    ​ 而设计模式已经是针对某个场景下某些问题的某个解决方案。也就是说这些设计原则是思想上的指导,而设计模式是实现上的手段,因此设计模式也是应该遵守这些原则的,换句话说,设计模式就是这些设计原则的一些具体体现

    设计模式和重构

    1:设计模式是重构的目标,重构是达到目标的手段

    2:重构并不排斥提前设计,重构并不是不需要设计

    3:合理的提前设计 + 重构来不断的改进设计 ==〉趋近于优秀的系统

    为什么要学习设计模式

    1:软件开发越来越复杂,对软件设计的要求也越来越高,而软件设计和架构的入门功夫就是深入理解和掌握设计模式,因此,设计模式的重要性不言而喻。

    2:设计模式已经成为软件开发人员的“标准词汇”

    3:学习设计模式是个人提高的捷径

    4:不用重复发明轮子

  • 相关阅读:
    Manage It! Part 2 规划和组织项目
    【转载】如何迅速成为Java高手
    Eclipse中最常用的快捷键
    向SQL Server全文索引进军,艰难历程
    数据库函数整理
    ASP.NET MVC简单编程篇(一)
    SQL Server存储过程及高级应用
    定义和赋值的区别 构造函数和拷贝构造函数
    SQL Server 2000
    Coustom web control 自定义控件
  • 原文地址:https://www.cnblogs.com/weixiaotao/p/10367526.html
Copyright © 2011-2022 走看看