`
yesbi
  • 浏览: 17615 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

OO学习--有关设计模式

阅读更多

 

原则:

 

 
      面向对象编程,培养面向对象思想。DDD,设计模式是面向对象的左右手。

   对象是人类的正常思维方式,它是表示具体东西或抽象的事物,它有单一的职责和统一的行为。(比如想到一个长方形的周长或面积,不能应当就想到对应的周长或面积,而是应当先想到长方形对应的是一个对象,它有对应的属性,长和宽,然后有对应的行为周长或面积还可以对应的相应的增长)

   “优先使用对象组合,而不是继承”。

   ISP接口分离原则。比如比如会报警的门AlarmDoor不能只实现一个有open,close,alarm三个行为的接口,根据ISP原则不能把它们门各报警的接口混为一堂,不能让Alarm模块的变化引起了Door这个不同行为模块的变化,因此要把它们分离。分成二个不同的接口一个是Door接口, 一个是Alarm接口。
   继承表示的是(is-a)关系,接口实现表示的是拥有(like-a)的关系。比如会报警的门AlarmDoor因为它本质上是门,拥有报警的功能,所以就应当这么实现class AlarmDoor extends Door implements Alam;是一个(is-a)用继承表示;有一个(has-a)用组合表示。

“对扩展开放,对修改关闭”开-闭原则。

       SOLID:面向对象设计的五项原则 (是SRP单一职责原则、OCP开闭原则、LSP李式代换原则、ISP依赖反转原则和 DIP接口分离原则,首字符的缩写)

 

设计模式:

二个阶段的学习

 1.熟记多少种的设计模式,格式规范,最普通,最经典的用法。

 2.什么场合用,这是关键。

 

以下是为什么用此模式的解释:

一、state状态模式

     状态不同引起的行为的不一致。状态模式中, 一个状态对应一个状态子类, 每个状态子类实现父类提供的行为, 外界在创建状态引用类的同时,在引用类内部根据初始的参数值创建 对应的状态类,状态引用类和状态类本身是一体的,是强耦合关系,状态类的创建和初始化由状态引用类来管理是完全合理的,所在外部调用时只是调用一状态引用类的接口,它不关心状态引用类的内部实现,不去关心状态类的创建和切换。

 

二、strategy策略模式
   选择不同的算法但引起的结局一样。

   策略模式里,是为了实现某个行为而采取的不同策略,采取何种何种策略由外部条件决定。   

   与状态模式区别:状态模式是随着状态的变化,做同样的行为,但结果是不一样的(如:银行不同级别信用卡用户,可以透支的金额是不一致的);策略模式是指做同样的行为,产生同样的结果,但选择的策略、实现方式是不一致的(如用不同的方式上传图片,用不同的算法压缩文件,用不同的图形方式展示相同的数据变化)。其实它们本来就是不一样的运用场景,本没有什么可比性。

 

三、Builder模式

   Builder模式用于创建复杂对象。创建方式和组件创建的分离。(比如车子的组装,包括方向盘,轮子,发动机)

 

 

 

五、适配器模式adapter

   先有二个相似的接口,为了把二个接口整理成同一个接口,而需要用到适配器模式。

六、brigde模式

  有二个(或多个)变化角色的不同组合实现M*N个对象,为了不用M*N个子类而是通过为M+N个类动态组合来实现,需要用到桥模式。

 

七、proxy模式

只对原有接口进行了少许的改变和控制。这时需要用到proxy模式(经典的权限控制)

 

分享到:
评论

相关推荐

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。...这也是我们软件设计所准求的,因此无论是OO中的封装、继承、多态,还是我们的设计模式的原则和实例都是在为了这两个目标努力着、贡献着。

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导

    第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。 第三册:《Head First软件开发(中文版)》内容包括:伟大的软件开发:让客户满意、收集需求:...

    设计模式资料汇总

    此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...

    head first 设计模式

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式...

    ooop-2020-2021-semester-2

    9. **软件设计模式**:学习常见的设计模式,如单例、工厂、观察者、装饰器等,提高代码可维护性和可扩展性。 10. **计算机科学理论**:如计算复杂性理论、图灵机、编码理论等。 以上就是根据给定的标题和描述推测...

    5-互评-OO之接口-DAO模式代码阅读及应用

    DAO模式是一种设计模式,它为访问和操作持久化数据提供了抽象层。在Java应用中,DAO通常用来封装对数据库的操作,隔离业务逻辑和数据访问逻辑。这样做的好处包括: 1. **解耦**:业务逻辑不再直接依赖于数据库API,...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    通过学习这本书,开发者能够更好地掌握如何在C#工程中应用设计模式,提高代码质量,降低维护成本,并且更好地适应软件需求的变化。此外,书中可能还会涉及面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)、...

    设计模式入门指导

    在探讨设计模式的入门知识之前,我们需要对面向对象(Object-Oriented,OO)和面向过程(Procedure-Oriented)的编程思想有所了解。面向过程的编程是以事件为中心的,注重于具体的操作步骤,如C语言就是面向过程编程...

    oojs-grocery-list

    Angular JS是基于MVC(Model-View-Controller)设计模式的,它将数据模型、视图和控制器紧密结合,实现了数据绑定和依赖注入,大大减少了DOM操作,提高了开发效率。在"oojs-grocery-list"中,我们将看到如何运用这些...

    设计模式-可复用面向对象软件的基础.rar

    设计模式是软件工程中的一种重要概念...总之,《设计模式-可复用面向对象软件的基础》提供了面向对象设计的宝贵资源,通过学习和实践这些模式,开发者可以提升自己的编程技能,创建出更高质量、更易于维护的软件系统。

    oo 面向对象action

    描述中的“oo学习”提示我们将深入理解面向对象编程的基本概念和原理,以及如何在实际项目中应用它们。这可能包括如何定义类,创建对象,以及如何利用面向对象的设计模式来优化代码结构。 标签中的“另类其它”可能...

    Head First 设计模式(中文完整版+附书源码)part1

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计...

    Head.First 设计模式学习笔记.pdf

    ### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...

    Fundamentos-Programacao-OO-源码.rar

    9. 设计模式:设计模式是解决常见编程问题的模板,如单例模式、工厂模式、装饰器模式等。源码中可能蕴含了一些设计模式的应用,帮助你理解如何在实际开发中应用这些模式。 通过对这个源码压缩包的分析和学习,你...

    oo-tutorial_ssd3_

    4. **设计模式**:遵循SSD3方法,可能会介绍一些常见的设计模式,如工厂模式、单例模式等,这些模式有助于解决常见设计问题并提高代码质量。 在oo-tutorial.chm文件中,你可以期待找到详细的章节和示例代码,涵盖...

    设计模式-UML.pdf

    - **设计模式**:在软件工程中,设计模式是一种通用的解决方案,它针对特定问题在特定环境中出现的情况。设计模式并不是完成代码或者框架,而是一种被广泛接受的指导思想,帮助开发者更好地解决常见的设计问题。 - ...

    Head First设计模式(中文,无水印,完整版)

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计...

    学习oo好榜样(设计良品)

    【学习oo好榜样(设计良品)】 设计良好的软件代码是每个程序员追求的目标,而避免“Bad Smells”(不良代码气味)并进行重构是实现这一目标的重要手段。本篇文章将探讨两个重要的代码质量指标——重复的代码...

Global site tag (gtag.js) - Google Analytics