`
dingjob
  • 浏览: 183252 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

胡协刚分析设计模式培训心得

阅读更多
   最近参加了公司的一个外部培训,就是胡协刚老师的设计模式培训,哎,名声这么大,中国架构师网首席架构师,讲课的水平确实不是特别高,培训时被无数次挑战,很多话都是问句,要知道每次争取培训机会都是比较难的,往往刚发出来通知,就已经被如狼似虎的同志们抢光了, 再就是培训的费用是很高的每天超过12000元哈,这里先发下牢骚,再讲他讲的主要内容和我整理的相关的东东。

一.基本概念

1.什么是分析模式
  对表象行为进行规律性总结,抽象出能够准确表达共通问题的分析模型模板
2.分析与设计的区别
  分析是抽象共性,分析出来业务系统的名词中哪些是实体,哪些是实例,设计是具体到如何实现,分析是不要考虑数据库的存储,设计时要考虑的。
3.分析是为了构建领域模型,如何才能构建领域模型呢
   领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。
领域模型设计的步骤为:
(1). 从业务描述中提取名词;
(2). 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;
(3). 从业务实体集合中抽象业务模型,建立问题域的概念(例如,我们把容易变质的水果称之为“短期保持水果”,当然也可以是其它说法,只要能跟用户达成共识即可);
(4). 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系;


二.常用的分析的几种模式

1.参与者模式

这个是基本的分析方法,比如淘宝用户的购买群体可能有个人,也有可能有组织,这个时候要抽象他们的共性,就是他们都是参与者即Party

   进阶阶段,对组织抽象

  
  比如公司里分实线管理和虚线管理的两种架构,这种情况下在设计时要有另外的实体来维护这种上下级的关系,但是这样也不能完全解决问题,在这个关系里可以找到上级和下级,要找同级的就比较麻烦,要找自己的上级的下级。
  
   再进阶阶段,组织关系抽象[img]
   http://dl.iteye.com/upload/attachment/176848/759412e4-a5c8-3df9-9a49-6e6c9fe50550.bmp[/img]




组织结构类型抽象的实质是使用关联类来对关联关系进行更高级别的抽象。

2. 类型元模式

   该模式解决的问题,描述相同类别的不同对象,不同的实现。
举例:描述一组类型,三角形,四边形,五边形等等

1. 最基础的实现,大家都知道,定义接口,实现不同的实体。



  进阶阶段,增加类型和实例对应

  分离知识层和操作层,triangelType等都是PolygonInstance类的一个对象。而在PolygonType中有个type表示是什么类型。
 
 



再进阶就是,假如外贸版产品中会有售卖笔记本的这类产品,最好就是根据其型号,能够自动出来很多其他属性,比如选择了T61,就应该有2.4Gcpu等,如果有个性化需求再将某个属性覆盖掉,具体图后续贴上来。




总结下设计的任务,其实就是两个,一是找出来会有哪些类,然后就是给这些类分配职责。根据职责和扩展性使用GOF等模式就可以了。


  
  • 大小: 1.6 KB
  • 大小: 2.3 KB
  • 大小: 1 KB
  • 大小: 1.5 KB
  • 大小: 1.8 KB
  • 大小: 3.8 KB
0
0
分享到:
评论

相关推荐

    软件设计模式大作业

    本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,分别是简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式和观察者模式。该大作业的主要内容包括系统流程、系统类图、各个模式的子类图、...

    设计模式对比分析

    最简单理解设计模式,个模式特征对比分析,分析模式的特性和差别

    深入浅出设计模式 完整扫描版

    作者: 郭峰 出版社:中国铁道出版社 ... 《深入浅出设计模式》适用于中、高级软件设计和开发人员,尤其是已经学习过设计模式但没有收获的开发人员,同时也可作为高校相关专业师生和社会培训班的教材。

    Android源码设计模式解析与实战.pdf

    《Android 源码设计模式解析与实战》不仅分析了Android源代码的设计模式,更结合实例演示了如何使用这些设计模式。看这本书,既能学到如何分析、学习Android源代码,又能提高自己架构设计水平 《Android 源码设计...

    设计模式资料汇总

    .pdf JAVA设计模式.chm 软件设计的七大原则.doc 设计之道.pdf C#设计模式分析.doc C#设计模式-微软.rar 从追MM谈Java的23种设计模式.txt 什么是OO思想.txt 探寻软件的永恒之道.txt 你还...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计...全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。

    设计模式期末作业(要求5个以上的设计模式的模拟系统)

    这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:...

    Head First设计模式(完整高清版).pdf

    《Head First设计模式》是一本深受开发者喜爱的经典书籍,它以独特且易于理解的方式介绍了设计模式这一复杂的概念。设计模式是软件开发中的经验总结,是解决常见问题的有效模板,可以帮助我们编写更灵活、可维护和可...

    尚硅谷设计模式源码笔记课件.zip

    本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...

    设计模式:可复用面向对象软件的基础(非扫描版+高清)

    《设计模式:可复用面向对象软件的基础》是一本经典的软件工程著作,它详细阐述了在面向对象编程中,如何通过使用预定义的解决方案模板来解决常见问题,从而提高代码的可读性、可维护性和复用性。设计模式是经验丰富...

    C++ Qt设计模式源代码

    书是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零...

    MapReduce 设计模式

    MapReduce设计模式是对MapReduce编程范式的进一步深化,通过多种不同的算法和策略来解决数据处理中的常见问题。 本文档中提到了《MapReduce设计模式》这本书,由Donald Miner和Adam Shook所著。书籍的标题说明了其...

    界面设计模式等UI设计多本合集PDF

    简约至上:交互式设计四策略.pdf 界面设计模式 Designing Interfaces 2nd Edition.pdf 瞬间之美+Web界面设计如何让用户心动.pdf

    刘伟设计模式和例子

    3. 行为型模式:包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、责任链模式、备忘录模式、状态模式、访问者模式和解释器模式。行为型模式主要处理对象之间的交互和职责分配,使代码更具灵活性和可...

    java程序设计课程培训心得体会___五篇.docx

    【Java程序设计课程培训心得体会】 Java程序设计课程不仅是一门技术性的学习,更是一种思维锻炼的过程。通过学习Java,我们可以增强逻辑思维能力,理解和解决复杂问题。在培训中,同学们积极参与,通过编写程序来...

    设计模式:可复用面向对象软件的基础.[美]Erich Gamma(带详细书签)

    这本书的目的就是将面向对象软件的设计经验作为设计模式记录下来。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。我们的目标是将设计经验以人们能够有效利用的形式记录下来。...

    北京中科信软VS.NET设计模式与软件架构设计培训1

    此外,培训还包括了软件架构设计方法论、软件架构设计模式、软件架构设计流程、软件架构分析、基础架构设计以及全局架构设计的全面内容。通过实例分析,让学员能够将理论知识应用到实践中,解决实际工程问题,提高...

    时间触发嵌入式系统设计模式--配套光盘

    时间触发嵌入式系统设计模式是一种严谨的系统构建方法,其核心在于确保系统的确定性和可预测性。在《时间触发嵌入式系统设计模式》这本书中,作者深入浅出地探讨了如何通过精心设计和优化调度策略来实现这种系统。...

Global site tag (gtag.js) - Google Analytics