`

java基本的设计原则与常用设计模式笔记

阅读更多
使用基本的设计原则与设计模式的原因:复用与可维护
设计原则:
1.开-闭原则(ocp):一个软件实体应该对扩展开放(底层对业务的实现应该是可灵活改变的,针对接口编程?),对修改关闭(高层的业务逻辑由抽象类定义,确定后不能修改)
  eg:模版方法,好莱坞原则
2.里氏代换原则(lsp):任何基类适应的地方,子类一定适用(继承?)
3.依赖倒转原则(dip):要依赖于抽象,不能依赖于实现(针对接口编程?)
     a.零耦合  b.具体耦合(耦合关系建立在具体类之间)  c.抽象耦合(耦合关系依赖于抽象类或接口)
    
4.接口隔离原则(isp):使用多个专门的接口比使用单一的总接口要好
     原因:服务定制与接口污染
5.组合/聚合复用原则(crad):要尽量使用组合/聚合,而不是使用继承来达到目的
   原因:
       继承复用的缺点:静态复用
       什么使用使用继承:a.满足 is-a的关系,而不是 has-a的关系
                         b.满足lsp原则
       优点:a.简洁  b.父类修改某个方法,子类能获得

6.迪米特法则(lod),也称最少知识原则:一个对象或模块应该和其它对象和模块尽量少的通信(高内聚),涉及的模式有:门面模式,调停者模式,前端控制器模式,业务代表模式,dao模式



设计模式:
什么是设计模式:为了解决特定问题而提出的较通用的解决方案
门面模式:系统通过门面对象,向外界提供粗粒度的业务接口,客户端通过门面对象访问系统,不需要了解系统的内部细节
   粒度:对象的相对大小,或提供的宽度(对外提供了业务流程的总结接口)

工厂模式:由工厂对象来实现对象的创建;好处,当扩展时没必要修改引用类的代码
       a.简单工厂:一个工厂负责创建所有对象 
       b.工厂方法:一种对象由一种工厂创建
单例模式:系统中你需要获得某个类的唯一实例(内存中只维护一个实例)
         a.懒汉式:有线程安全问题,创建的对象可能不止一次,但只有一个被维护,    
       其余将会被gc,解决的方法是在静态方法前加synchronized
        b.饥饿式
组合模式:描述对象之间整体与部分之间的关系,需使用一个接口装配接口下的单纯元素与复合元素  eg:java.awt.Component的 Container 与java.io.File下的文件与目录
观察者模式:当主题的状态发生改变的时候,需通知其它对象类 
          eg:java.awt的事件处理机制,数据库的缓存池维持的实例数目
策略模式:从多个相似的算法中选择一个 
          eg:java.awt中的布局管理器
mvc模式:解决模型层与视图层的耦合问题
        m:观察者模式?
        v:组合/聚合模式?
        c:策略模式?

状态模式:与策略模式类似,对象的行为依赖与其状态,对象必须根据其状态选择不同的行为方式
      *  状态模式提供依赖的是其自身的状态,策略模式由一个类控制实现哪一个算法
委托:客户端通过委托类间接调用被委托类的方法,委托类可附加一些操作来为客户端服务
代理:本质上也是一种委托模式,被委托类与委托类都实现同一个接口,客户端不区分被委托类和委托类


  
分享到:
评论
2 楼 minn84 2010-06-16  
补充下:个人理解,mvc是一种架构,在mvc里根据需要可以使用很多的设计模式,很多人也应该是这样理解的吧,哈哈。。。
1 楼 sunzongbao2007 2010-06-15  
回楼主 看见结尾了
MVC不是model view control么
还是楼主的意思是 用三种模式来设计三个模块

相关推荐

    自己总结的设计模式笔记

    设计模式笔记 设计模式是软件开发中常用的解决方案,能够提高代码的灵活性、可维护性和可扩展性。以下是设计模式的七大原则和两种常用的创建型设计模式。 1. "开-闭"原则 "开-闭"原则是设计模式的核心原则,指...

    图解Java设计模式笔记总结word版本.rar

    Java设计模式是软件开发中的重要概念,它...以上是对“图解Java设计模式笔记总结word版本”中可能包含的知识点的详尽解析,通过深入理解这些设计模式和原则,开发者可以更好地构建高效、稳定和易于维护的Java应用程序。

    大佬的java笔记

    笔记中可能会包含对常用设计模式和良好软件架构设计原则的讲解。 6. 高级特性:如泛型、注解、反射、枚举等,这些都是Java语言特有的高级特性,能够极大提升编程的灵活性和代码的复用性。 7. Java虚拟机(JVM):...

    尚硅谷_韩顺平_图解Java设计模式

    这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式的宝贵资源。尚硅谷作为一个提供多样化技术资料的平台,涵盖了Java、大数据、前端、Python、人工智能及区块链等领域,...

    设计模式笔记设计模式笔记

    3. **常用设计模式详解**: - 单例模式:保证一个类只有一个实例,并提供全局访问点。常见应用场景包括线程池、缓存、对话框、注册表设置等。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一...

    java笔记 java笔记

    Java的设计理念是“一次编写,到处运行”,这意味着编写的Java程序可以在任何安装了Java虚拟机(JVM)的设备上运行。 #### 1.1 Java的特点 - **面向对象**:Java是一种纯粹的面向对象的语言,几乎所有的数据都是以...

    java学习心得,笔记,思想

    在实际开发中,用户管理通常涉及到用户注册、登录验证、权限控制等功能,这些都需要利用到面向对象设计原则和设计模式,比如工厂模式、单例模式等。 "Java275"可能是指Java 2版的第75个更新,也可能是某个特定主题...

    java\CoreJava笔记\CoreJAVA_day01

    CoreJava是Java的基础,涵盖了Java Standard Edition (J2SE)的主要内容,包括基本语法、面向对象编程(OO)原则、核心类库的使用等。在学习CoreJava时,我们需要掌握以下几个关键知识点: 1. **编程思想**: - ...

    跃达创新JAVA课堂笔记

    7. **面试笔记**:这部分可能是针对Java程序员常见的面试问题的解答,涵盖设计模式、集合框架、多线程、异常处理、垃圾回收机制、Java内存模型、JVM优化等方面的知识。 通过对这些内容的学习,读者不仅可以掌握Java...

    Java后端学习笔记代码Java后端学习笔记代码

    11. **设计模式**: 了解并应用工厂模式、单例模式、观察者模式等常见设计模式,可以提高代码的可维护性和可扩展性。 12. **性能优化**: 分析和优化Java应用性能,如内存管理、JVM调优、数据库查询优化等。 13. **...

    java学习笔记,java学习指导,java指点迷津

    "java笔记.rar"是一个压缩文件,通常包含更深入的学习材料,可能涵盖高级主题,如多线程、网络编程、IO流、反射、枚举、注解、设计模式等。解压后,读者可以详细阅读并实践这些代码示例,以增强对Java特性和最佳实践...

    软件设计师软考笔记.zip

    这份压缩包包含了博主在学习过程中记录的详细笔记,以及一份精心整理的设计模式表格,旨在帮助备考者系统、高效地掌握相关知识。 首先,我们来探讨一下“软考”——这是一项国家级的专业技术资格认证考试,旨在评测...

    Java_se基础毕向东老师全程笔记

    这份笔记由毕向东老师授课,涵盖了Java的基础知识及进阶主题,具体章节包括编程基础、数组、面向对象程序设计等多个方面。接下来,我们将详细探讨每一章的主要内容。 ### 第一章:编程基础 #### 1. Java的特性和...

    Java_笔记整理

    - **重构技术**:理解重构的意义与基本原则,掌握常见的重构手法。 3. **Oracle数据库** - **SQL基础**:查询、插入、更新、删除等基本操作。 - **索引与视图**:索引的作用与创建方法,视图的定义及其使用场景...

    良葛格 Java 学习笔记-JavaGossip全(v1+v2)

    12. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式、装饰者模式、观察者模式等,并通过实例解析其应用场景。 13. **Spring框架**:概述Spring的核心特性,如依赖注入、AOP(面向切面编程)以及Spring ...

    工厂综合设计模式笔记

    工厂设计模式是软件开发中常用的设计模式之一,其主要目的是为了解耦客户端代码与具体对象的创建过程。这种模式提供了一种间接的方式,使得客户端可以通过一个抽象的工厂接口来请求所需的对象,而不是直接实例化对象...

    软考中级软件设计师专题复习笔记

    掌握常见的设计模式,如工厂模式、单例模式、观察者模式等,这些模式在实际项目中广泛应用。 8. **法律法规与标准化**:了解与软件开发相关的知识产权法、合同法,以及ISO、IEEE等制定的相关标准和规范。 9. **...

Global site tag (gtag.js) - Google Analytics