Java设计模式

写在前面: 本片文章只是记录了自己学习时的一些笔记,纯粹是为了自己后面方便查找,片言碎语,不适合大家浏览,请大家不要参考这篇文章。

 

正文:
1、UML简介与入门

    Unified Modeling Language,统一建模语言或标准建模语言,是一个OMG标准,OMG:Object Management Group,对象管理组织。
    
2、UML类图详细介绍(上)

    (1)、类
            矩形框代表一个类,该类图分为三层,第一层显示类的名称;第二层是类的特性,通常是成员变量和属性(attribute);第三层是类的操作,通常是方法或函数(operation)
            
    (2)、接口
            圆圈或者方框
    
3、UML类图详细介绍(下)
    
    (1)、类与继承泛化(Generalization)
        泛化关系:是一种继承关系,表示一般(父类)与特殊(子类)的关系,制定了子类如何特化父类的所有特征和行为。
        箭头指向:带三角箭头的实线,箭头指向父类
        代码表现:最典型的是extends
    (2)、接口与实现(Realization)
        实现关系:是一种类与接口的关系。
        箭头指向:带三角箭头的虚线,箭头指向接口或是直线连接圆圈
        代码实现:最典型的就是implements
    (3)、依赖(Dependency)
        依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,尽量不使用双向的依赖关系。
        代码表现:最典型的就是import
    (4)、关联(Association)
        关联关系:是一种拥有的关系,它使一个类知道另一个类的属性和方法,关联可以是单向的也可以是双向的。
        代码体现:成员变量
        箭头指向:带普通箭头的实心线,指向被拥有者。
    (5)、聚合(Aggregation)
        聚合关系:整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
        代码体现:成员变量
        箭头指向:带空心菱形的实心线,菱形指向整体。
    (6)、组合(Composition)
        组合关系:整体与部分的关系,但部分不能离开整体而单独存在。
        代码体现:成员变量
        箭头指向:带实心菱形的实线,菱形指向整体。
        
4、面向对象设计之单一职责原则SRP

    (1)、SRP:Single Responsibitity Principle :一个类只负责一个功能领域中的相应原则。
    
5、面向对象设计之开放封闭原则OCP

    (1)、OCP: Open-Closed Principle :对扩展开放,对修改关闭,即软件实体应尽量在不修改原有代码的情况下进行扩展。
    
6、面向对象设计之里氏替换原则LSP

    (1)、LSP:Liskov Substitution Principle,子类型必须能够替换他们的基类型,一个软件如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,
            程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。
            
7、面向对象之依赖倒置原则DIP

    (1)、DIP:Dependence Inversion Principle,要依赖于抽象,不要依赖于具体。客户端依赖于抽象耦合。
    
8、面向对象之接口隔离原则ISP

    (1)、ISP:Interface Segregation Principle,使用多个专一功能的接口比使用一个总接口要好。
    
9、面向对象之迪米特法则LKP

    (1)、LKP,又叫做最少知识原则(Least Knowledge Principle),对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的联系。

10、设计模式之单例模式(Singleton)(上)

    (1)、设计模式(Design pattern)
    (2)、设计模式分类:有6个具体的创建型模式
            简单工厂模式(Simple Factory)
            工厂方法模式(Factory Method)
            抽象工厂模式(Abstrace Factory)
            创建者模式(Builder)
            原型模式(Prototype)
            单例模式(Singleton)
    (3)、单例模式:一个类有且只有一个实例,并且自行实例化向整个系统提供。
            关键点:某个类只有一个实例;private static
                    必须自行创建这个实例;private
                    必须自行向整个系统提供这个实例;
            解决的问题:提供全局需要使用的,唯一的数据访问。
            成员:静态的实例
            方法:私有构造方法和静态的获取实例方法
            创建的时机分类:
                饿汉式(hungry):在类加载时创建
                懒汉式(lazy):在使用时做判断,如果需要再创建

11、设计模式之单例模式(Singleton)(下)                

    (1)、单例模式线程安全问题:
            饿汉式(hungry):线程安全,但过早的浪费资源
            懒汉式(lazy):用的时候才创建节约资源,但为线程安全需要付出额外的代价。
    (2)、线程安全懒汉式单例模式
            Synchronized 方法
            双重检测锁单例模式
            内部类Holder式(建议使用)
                
12、设计模式之工厂模式

    (1)、工厂模式分三种:简单工厂、工厂方法、抽象工厂
    
    (2)、工厂模式之简单工厂模式(Simple Factory Pattern)
            属于类的创新型模式,又叫静态工厂方法模式(Static Factory Method Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
            
    工厂模式之工厂方法

    (1)、即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。
    
    工厂模式之抽象工厂模式

    (1)、提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。
    
15、设计模式之代理模式
·
    (1)、代理模式(proxy pattern),在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在这两个对象之间起到中介作用。
            
16、设计模式之JAVA动态代理

    (1)、静态代理:自己手写的代理类,就是在程序运行前就已经存在的编译好的代理类
         动态代理:如果代理程序运行前并不存在,需要在程序运行时动态生成(无需手工编写代理类源码)。
            如何生成:根据Java的反射机制动态生成。
            
    (2)、Java动态代理(Dynamic Proxy)
         Java中要创建一个代理对象,必须调用Proxy类的静态方法newProxyInstance,原型如下:
         Object Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler handler)
            loader:类型加载器,对于不同来源的类需要不同的类加载器来加载。
            interfaces:被代理对象共有的接口;
            handler:调用处理器,必须是实现了InvocationHandler接口的对象,其作用是定义代理对象中需要执行的具体操作。
        InvocationHandler:
            InvocationHandler 之于Proxy,就如Runnable之于Thread,InvoacationHandler接口只有一个方法invoke,他的作用就跟Runnable 中的run方法类似,
            定义了代理对象在执行真实对象的方法时所希望执行的动作,原型如下:    
            Object invoke(Object proxy,Method method,Object[] args) throws Throwable
            proxy,表示执行这个方法的代理对象
            method,表示真实对象实际需要执行的方法
            args,表示真实对象实际执行方法时所需的参数。
            
17、设计模式之适配器模式(上)

    (1)、适配器模式(Adapter pattern)
            将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本接口不兼容而不能一起工作的那些类可以一起工作。

18、设计模式之适配器模式(下)            
    
    (1)、
    
19、设计模式之观察者模式(上)

    (1)、观察者模式(Observer pattern):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。

20、设置模式之观察者模式(下)
    
    (1)、
        
21、设计模式之策略模式

    (1)、策略模式:Strategy Pattern,定义了一些列的算法,并将每一个算法封装起来,而且使他们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化。

22、复合模式与反模式

    (1)、MVC(Model View Controller)模型视图控制器 复合模式
            常见的MVC框架: 服务器常用的Spring、Android客户端

    (2)、MVP(Model View Presenter)


       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KiranWang

一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值