首页 > 其他分享 >非关语言: 设计模式

非关语言: 设计模式

时间:2023-07-24 23:06:54浏览次数:43  
标签:Gof 实作 语言 非关 模式 物件 Java 设计模式


http://www.riabook.cn/doc/designpattern/

非关语言: 设计模式

程式设计是思维具体化的一种方式,是思考如何解决问题的过程,设计模式是在解决问题的过程中,一些良好思路的经验集成,最早讲设计模式,人们总会提到 Gof  的著作,它最早将经典的 23 种模式集合在一起说明,对后期学习程式设计,尤其是对从事物件导向程式设计的人们起了莫大的影响。


后来设计模式一词被广泛的应用到各种经验集成,甚至还有反模式(AntiPattern),反模式教导您如何避开一些常犯且似是而非的程式设计思维。


这边的话将整理一些设计模式学习心得,实作的部份是使用Java,因而您会看到一些与 Gof 模式不同的图及实作方式,这是为了善用一些Java本身的特性,至于C++的实作方面,Gof 的书已经给了不少的例子。


在一些模式的实作上,您会发现我用了介面(interface)来取代抽象类别(Abstract class),这与原先的Gof书中的范例会不尽相同,这是因为在C++中没有介面,一个完全没有实作任何方法的抽象类别,根据当时描述的主题特性,可以的话会将之换为介面,在语义上会较符合Java语言的特性,但是您要知道的是,介面与完全没有实作任何方法的抽象类别在某些时候是可以互换的。


在这边所看到的 UML 图都是使用 Jude 绘制的,Jude 是一个纯 Java 撰写的 UML 工具程式,可运行与 Windows、Linux 等多个平台,体积小,使用简易。



Gof 模式

    以下的设计模式则是我个人从 Gof 学习中的个人体会与实作,并增加几个导入或衍生的简单模式。

  • Creational 模式

物件的产生需要消耗系统资源,所以如何有效率的产生、管理与操作物件,一直都是值得讨论的课题, Creational 模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向。


 

  • Structural 模式

如何设计物件之间的静态结构,如何完成物件之间的继承、实现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等议题。Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构。


 

  • Behavioral 模式

物件之间的合作行为构成了程式最终的行为,物件之间若有设计良好的行为互动,不仅使得程式执行时更有效率,更可以让物件的职责更为清晰、整个程式的动态结构(像是物件调度)更有弹性。


 


多执行绪模式

    在很多应用中都会使用多执行绪,尤其是在Web应用中,多执行绪以 Gof 整理的模式为基础,考量多执行绪环境中,如何组合这些基本模式来完成多执行绪安全要求。

 


参考资料

    以下是以Java实作设计模式的介绍网站,从下面的连结开始,当中您可以找到更多设计模式的资源。

 

标签:Gof,实作,语言,非关,模式,物件,Java,设计模式
From: https://blog.51cto.com/u_16174476/6840192

相关文章

  • 初识C语言——7扫雷(低配)
    主程序——text.c:#define_CRT_SECURE_NO_WARNINGS1#include"game.h"game(){ charHide[ACRS][COLS]={'0'}; charShow[ACRS][COLS]={'0'}; //数组初识化 Initialize(Hide,ACRS,COLS,'0'); Initialize(Show,ACRS,......
  • go语言gorm
    ORM对象关系映射(ObjectRelationalMapping,ORM)。指的是对象和关系之间的映射,使用面向对象的方式操作数据库。关系模型和Go对象之间的映射table=>struct,表映射为结构体row=>object,行映射为实例column=>property,字段映射为属性可以认为ORM是一种高级抽象,对......
  • C语言分支与循环(7)--- do...while()循环
    一.do语句的语法do循环语句;while(表达式);我们可以发现do后面的循环语句一定会被执行一次,随后再去执行while()循环语句,去判断表达式,如果为真则返回do语句继续执行,若为假则不进入do语句循环,如以下代码:#include<stdio.h>intmain(void){ inti=0; do { printf("%d",i);......
  • 我的第五次C语言练习
    今天写书上的练习。//第一章练习//intmain(void)//{// intinch;// floatcm;// inch=0;// scanf("%d",&inch);// cm=2.54*inch;// printf("cm=%f\n",cm);// return0;//}发现之前第一章还有练习没写,是将英尺转换为厘米,因为inch乘了个2.54,所以cm是小数,用的是flo......
  • 简单理解:C语言中的分支和循环语句
    一、C语言中的循环语句while循环while(//条件语句){//语句块}执行的逻辑:在执行到while()这一行时,会根据条件语句的真和假来判断是否继续进行循环,若条件语句为真则继续循环,如果条件为假则结束循环。dowhile循环do{//语句块}while(条件语句);执行的逻辑:和while类似,但是要注......
  • 需求前十的编程语言——唯独钟爱Python
    在过去的17个月(2022年1月至2023年5月)时间里,DevJobsScanner通过分析超1400万个开发人员职位,并从中筛选了有明确编程语言需求的职位,得出了在2023年需求量最大的8种语言。目前市场中需求最高的前八位语言分别是:1、JavaScript/TypeScript和以往一样,Javascript仍然......
  • R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化|
    原文链接:http://tecdat.cn/?p=24613最近我们被客户要求撰写关于社区发现算法的研究报告,包括一些图形和统计输出。我们在心理学网络论文中看到的一个问题是,作者有时会对其数据的可视化进行过度解释。这尤其涉及到图形的布局和节点的位置,例如:网络中的节点是否聚集在某些社区 ( ......
  • R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究|附代码数据
    原文链接:http://tecdat.cn/?p=6864我们围绕文本挖掘技术进行一些咨询,帮助客户解决独特的业务问题。我们对20个Usenet公告板的20,000条消息进行分析 ( 点击文末“阅读原文”获取完整代码数据******** )。此数据集中的Usenet公告板包括新汽车,体育和密码学等主题。预处理我们首......
  • C语言指针的常见问题
    1值传递下面看一个列子,student结构体中包含该学生的各种信息,我们在change函数中对其进行部分修改,再在主函数中输出其结果#include<stdio.h>#include<string.h>#defineformat"%d\n%s\n%f\n%f\n%f\n"structstudent{intnum;charname[20];floatscore[3]......
  • C语言模拟银行排队叫号系统(链队)
    一.队列队列是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队尾,而从队列中删除元素时则总是删除队头元素。由于队列具有FIFO特性,因此队列通常用于需要按照顺序处理数据的场......