设计模式

设计模式:
    设计模式相关内容介绍
    创建者模式
    结构型模式
    行为型模式
    综合练习
    
1、设计模式概述
    软件设计模式产生背景
        
    软件设计模式概述
    学习设计模式的必要性
    设计模式的分类
        创建型模式:
            用于描述怎么创建对象,它的主要特点是将对象的创建与使用分离,gof书中提供了单例,原型,工厂方法,抽象工厂,建造者等5种创建型模式。
        结构型模式:
            用于描述如何将类或对象按某种布局组成更大的结构。gof书中提供了代理、适配器,桥接、装饰、外观、享元、组合等7种结构模式。
        行为型模式:
            用于描述类或对象之间相互协作共同完成单个对象无法单独完成的任务,以及怎么分配职责。gof四人组书中提供了模板方法,策略、命令职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等11种行为型模式。

2、UML图
    UML类图
    统一建模语言(unifild modeling language,uml)是用来设计软件的可视化建模语言,它的特点是简单、统一、图形化、能表达软件中的动态与静态信息。
    UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。
    
    类图的概述:
        类类图(class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
    
    类图的作用:
        在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化人们对系统的理解。
        UML从目标系统的不同的角度出发,定义了例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。
    类图的概述:
        类类图 class diagram  是显示了模型的静态结构,特别是模型中存在的类,类的内部结构以及它们与其他类的关系等,类图不显示暂时的信息。
        类图是面象对象建模的主要组成部分。 
    类图的作用:
        在软件工程,类图是一种静态的结构图。描述了系统的类的集合,类的属性和类之间的关系,可以简化人们对系统的理解。
        类图的系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。
    类图表示法:
        类的表示方式
        在uml类图中,类使用包含类名,属性filed 和 方法 method 且带有分割线的矩形表示,比如下图的employee类,它包含name,age,address这3个属性,以及work方法。
        empployee 
        - name:string
        - age:int 
        - address:string 
        +workd() :void 
        属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,uml类图中表示可见性的符号有三种:
            + 表示 public 
            - 表示 private 
            # 表示 protedted 
        属性的完整表示方法是: 可见性 名称:类型 [=缺省值]
        方法的完整表示方法是: 可见性 名称(参数表列表)【:返回类型】
        
        注意:
            中括号中内容表示可选。
            也有将类型放在变量名面前,返回值类型放在方法名前面。
            
            Demo
            
            
            + method():void 
            - method():String
            # method2(Int part1,String par2):int  
            
    类与类之间关系的表示方式:
        关联关系:
            关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象的之间联系,如老师和学生
            师傅和妻子等,关联关系是类与类

3、软件设计原则
    

    
    开闭原则:
    对扩展开放,对修改关闭,在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果,简言之,是为了使用程序的扩展性好,易于维护和升级。
    想要达到这样的效果,我们需要使用接口和抽象类。
    因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定,而软件易变的细节可以从派生来的实现类的进行扩展,当软件需要发生变化时,只需要根据需求
    重新派生一个实现类的扩展就可以了。
    下面以搜狗输入法的皮肤为例介绍开闭原则的应用。
    例如搜狗输入法的皮肤设计
    分析:搜狗输入法的皮肤是输入法背景图片,窗口颜色和声音等元素组合,用户可以根据自已的喜爱更换自已的输入法的皮肤,也可以从网上下载新的皮肤,这些皮肤有共同的特点。可以为其定义一个抽象类(AbstractSKin),而具体的皮肤(DefaultSpeificSkin)和Heimspecificskin是其子类,用户窗体可以根据需要选择或增加新的主题,而不需要修改原代码,所以它是满足开闭原则的。
    
    里氏代换原则
        1、里氏替换原则
        里氏替换原则是面向对象设计的基本原则之一:
        里氏替换原则:任何基类都可以出现的地方,子类一事实上可以出现,通俗理解,子类可以扩展父类的功能,但不能改变父类的原有功能,换句话说,子类继承父类时,除添加的方法完成新增功能外,尽量不要重写父类的方法。
        
        如果通过重写父类的方法来完成新功能,这样写起虽然简单,但是整个继承体系的可复用性比较差,特别运用多态比较频繁时,程序运行出错的概率会非常大。
        
        下面看一个里氏替换原则中经典的一个例子:
        在数学领域,正方形毫无疑问是长方形,它是一个长宽相等的长方形,所以我们开发一个与几何图形相关的软件系统,就可以顺理成章的让正形继续长方形。
        

    依赖倒转原则:
        高层模块,不应该依赖底层,两者都应该依赖抽象,抽象不应该细节,细节应该依赖抽象,简单的说就是要求抽象进行编程,不要实现进行编程,这样就降低了客户与实现模块间的耦合。
        
        组装电脑:
            现要组装一台电脑,需要配件cpu、硬盘,内存条,只有这些配置都有了,计算机才能正常的运行,选择Cpu有很多选择,如intel,amd等,硬盘可以选择
            
    接口隔离原则:
        客户端不应该被
    迪米特法则
    合成复用原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值