范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

设计模式简介

  学习设计模式的目的:理解松耦合掌握面向对象设计模式掌握重构技法掌握GOF
  可复用
  手法:面向对象
  本人下一步要学习架构搭建
  抽象思维非常重要。
  面向对象-》组件封装-》设计模式-》架构模式
  面向对象
  封装:隐藏内部代码
  继承:复用现有代码
  多态:改写对象行为
  主要是变化导致
  解决变化的复杂性:分解:分而治之。--》C语言,大问题分解成小问题。抽象:忽视非本质特征,去泛化和理想化对象模型。
  下面是伪代码方式说明分解方式和抽象方式,对于后期需求变化修改产生的影响://分解方法 //Shape.h #pragma once //例子为伪码 //设计画图工具 //点 class Point { public: 	int x; 	int y; };  //线 class Line { public: 	Point start; 	Point end; 	Line(const Point& start, const Point& end) 	{ 		this->start = start; 		this->end = end; 	} };  //矩形 class Rect { public: 	Point leftUp; 	int width; 	int height;   	Rect(const Point& leftUp, int width, int height) 	{ 		this->leftUp = leftUp; 		this->width = width; 		this->height = height; 	}  };  //有需求---圆形 //圆形 class Circle {   };//分解的方法 //MainForm.cpp //分解的设计方法。 #include  #include  #include "Shape.h"  using namespace std;  class MainForm :public Form { private: 	Point p1; 	Point p2;  	//这个地方用的是类对象,非指针 	vector lineVector; 	vector rectVector; 	//改变 	vector circleVector;  public: 	MainForm() 	{ 		//... 	}  protected: 	virtual void OnMouseDown(const MouseEventArgs& e); 	virtual void OnMouseUp(const MouseEventArgs& e); 	virtual void OnPaint(const PaintEventArgs& e); };  void MainForm::OnMouseDown(const MouseEventArgs& e) { 	p1.x = e.X; 	p1.y = e.Y; 	//... 	Form::OnMouseDown(e); }  void MainForm::OnMouseUp(const MouseEventArgs& e) { 	p2.x = e.X; 	p2.y = e.Y;  	if (rdoLine.Checked) 	{ 		Line line(p1, p2); 		lineVector.push_back(line); 	} 	else if (rdoRect.Checked) 	{ 		int width = abs(p2.x - p1.x); 		int height = abs(p2.y - p1.y);  		Rect rect(p1, width, height);  		rectVector.push_back(rect); 	} 	//改变 	else if (rdoCircle.Checked) 	{ 		Circle circle(); 		circleVector.push_back(circle);  	}     	//... 	this->Refresh();  	Form::OnMouseUp(e);  }  //界面被刷新时被调用 void MainForm::OnPaint(const PaintEventArgs& e) { 	//针对直线 	for (int i = 0; i < lineVector.size(); i++) 	{ 		e.Graphics.DrawLine(Pens.Red, 			lineVector[i].start.x, 			lineVector[i].start.y, 			lineVector[i].end.x, 			lineVector[i].end.y); 	}  	//针对矩形 	for (int i = 0; i < rectVector.size(); i++) 	{ 		e.Graphics.DrawRectangle(Pens.Red, 			rectVector[i].leftUp, 			rectVector[i].width, 			rectVector[i].height); 	} 	//改变 	//针对圆形 	for (int i = 0; i < circleVector.size(); i++) 	{ 		e.Graphics.DrawCircle(Pens.Red, 			circleVector[i]); 	}     	//... 	Form::OnPaint(e); }
  //抽象方法---可复用 //Shape_abstract.h #pragma once class Shape { public: 	virtual void Draw(const Graphics& g) = 0; 	//虚析构函数作用:子类通过多态释放时,子类的析构函数才能被正确的调用到 	virtual ~Shape() {} };  class Point { public: 	int x; 	int y; };   //所有继承都推荐用public class Line : public Shape { public: 	Point start; 	Point end;  	//构造函数 	Line(const Point& start, const Point& end) 	{ 		this->start = start; 		this->end = end; 	}  	//实现自己的Draw,负责画自己  重写父类虚函数 	virtual void Draw(const Graphics& g) 	{ 		g.DrawLine(Pend.Red, start.x, start.y, end.x, end.y); 	} };   class Rect :public Shape { public: 	Point leftUp; 	int width; 	int height;  	Rect(const Point& leftUp, int width, int height) 	{ 		this->leftUp = leftUp; 		this->width = width; 		this->height = height; 	}  	//实现自己的Draw, 负责画自己 	virtual void Draw(const Graphics& g) 	{ 		g.DrawRectangle(Pens.Red, leftUp, width, height); 	}  };  //改变 class Circle::public Shape { public: 	//实现自己的Draw, 负责画自己 	virtual void Draw(const Graphics& g) 	{ 		g.DrawCircle(Pens.Red, ...); 	} };      //抽象方法---可复用 //MainForm_abstract.cpp #include  #include  #include "shape_abstract.h"  using namespace std;  class MainForm : public Form {  private: 	Point p1; 	Point p2;  	//针对所有形状----注意,这个地方用的是Shape指针 	//这里面我们需要使用多态性。可能是Line Rect类型。 	//如果不用指针会造成对象切割,切割成小对象…会有问题 	//必须要房Shape指针 	vector shapeVector;  public: 	MainFor() 	{ 		//... 	}  protected: 	virtual void OnMouseDown(const MouseEventArgs& e); 	virtual void OnMouseUp(const MouseEventArgs& e); 	virtual void OnPaint(const PaintEventArgs& e); };    void MainForm::OnMouseDown(const MouseEventArgs& e) { 	p1.x = e.X; 	p1.y = e.Y;  	//... 	Form::OnMouseDown(e); }  void MainForm::OnMouseUp(const MouseEventArgs& e) { 	p2.x = e.X; 	p2.y = e.Y;  	if (rdoLine.Checked) 	{ 		//此处不能放栈对象,在MainForm的析构函数中要复制释放shapeVector中存放的堆对象指针 		shapeVector.push_back(new Line(p1, p2));//这个地方貌似有内存泄漏吧??? 	} 	else if (rdoRect.Checked) 	{ 		int width = abs(p2.x - p1.x); 		int height = abs(p2.y - p1.y); 		shapeVector.push_back(new Rect(p1, width, height)); 	} 	//改变---后面使用工厂模式可以消掉 	else if (...) 	{ 		//... 		shapeVector.push_back(...); 	} 	//... 	this->Refresh();  	Form::OnMouseUp(e); }  void MainForm::OnPaint(const PaintEventArgs& e) { 	//针对所有形状 	for (int i = 0; i < shapeVector.size(); i++) 	{ 		shapeVector[i]->Draw(e.Graphics);//多态调用,各负其责 	}  	//... 	Form::OnPaint(e);  }
  //用户有修改需求
  软件设计的目标---》复用。
  软件设计的金科玉律---复用。

微软Win1122H2又出bugOffice记事本等无法打开微软去年9底发布了Win1122H2,是Win11上市一年来首个年度重大更新。但几个月之后该版本仍然还会出现各种BUG。根据微软最新报告,Office记事本等原生应用存在无法打开的陈妍希携儿子走机场,她打扮时髦脸比少女还嫩,6岁儿子长相帅气头条创作挑战赛每个季节都有着独特的时尚基调,相比于活力十足的春夏,大家都默契地在秋冬时节选择了更稳妥不出错的简约大方风。这类简简单单的造型看似没什么设计感,但其实要诠释出简约却不简看了55岁英拉的打扮,我悟了衣服成套裙子过膝,优雅又高级女人过了50岁后,就正式步入了中年阶段,在穿衣打扮上很难拿捏到位,要么老气横秋,要么强行扮嫩。而对于真正有品位懂穿搭的中年女人来说,年龄带给她们更多的是阅历和收获,用简约大方自然得大衣下面不一定要穿裤子,瞧瞧杭州女生这样穿,有多洋气显瘦作为年年冬季都爆火的外套,大衣总是以其经典耐看百搭且气场型的特点流行于时尚圈。确实,大衣的百搭性,是不挑场合风格和人的身材的,所以才如此深受欢迎。但是真正能把大衣穿好的小姐姐却为数陈赫二婚老婆罕见亮相,穿棉服配紧身裤挺显瘦,但腿型真不像模特棉服是一种十分温暖的冬日必备单品,但棉服在穿搭上的缺点,就是容易显臃肿,因此棉服也有另一个名字面包服,正是形容棉服肿胀好似刚出炉的面包。那么,关于棉服穿搭,你需要掌握如何克服棉服在不想打底裤土到掉渣就这么穿,时髦又洋气,彰显高级品味!裙子是一年四季都流行的单品,但是大冬天里穿裙子露着腿难免受不了,因此在冬天里,不得不提另外一件单品,那就是打底裤了。打底裤看着不难搭,但搭不好就会显得又土又老气,打底裤的版型本身就杨紫王冰冰同框,杨紫被吐槽像主持人,王冰冰笑容甜美像女爱豆除夕将至,目前很多明星都已经进行完了最后一次联排。1月19日,杨紫登上春晚进行时,首次与王冰冰同框,两人的状态曝光后,引发不少网友热议。当天杨紫身穿针织无袖毛衣搭配白色衬衫,扎着高果然,这才是优雅女人的标配毛衣百褶裙,谁见都夸好看穿毛衣不一定非得配裤子,在今年冬天优雅女人都会搭配一条百褶裙,灵动感十足的裙摆,既可以遮住下半身的不足之处,又会显得女人味十足,从而尽情的释放出刻在骨子里的魅力,任谁见了都夸好看!适合秋冬季的四款保湿面霜科颜氏高效补水,碧欧泉修护抗老秋冬季护肤最为需要的就是一款适合自己的保湿面霜。保湿霜虽然护肤功效比较基础,不像是美白抗老护肤那么有吸引力,但是做好基础保湿却能够保证皮肤长效健康稳定。秋冬季皮肤更容易脆弱敏感,所眼霜推荐这些眼霜能够深入眼部肌底修护,由内保湿滋润眼周肌肤眼霜推荐这些眼霜能够深入眼部肌底修护,由内保湿滋润眼周肌肤!丸美凝时紧致眼精华多元眼精华小弹簧双管礼盒装日夜分时护理,精准抗皱,第4代小弹簧,日间抗氧淡纹,提拉抗皱,轻透嗜喱质地,童年的味道每逢佳节倍思亲童年的味道作者刘岩编辑秋枫图片岱岳疏影晚饭后,吹着晚风散步,感到无比的惬意和舒服。走到商户门头处,突然闻到了一股熟悉的味道。我闭上眼睛使劲嗅了一口,把它吸进肺里,留在心里,那是蚊蒿
东施效颦,卡米拉也是拼了,模仿戴安娜穿戴,气质却不足难媲美东施效颦,卡米拉也是拼了,模仿戴安娜穿戴,气质却不足难媲美73岁卡米拉强行撞衫戴安娜黑天鹅造型,又土又村不及半点为了赢得民众的尊重,处处模仿戴安娜,最终成赢家戴安娜成王室穿搭范本,刘雯的穿衣搭配每个人都有自己的独特风格找到适合的搭配方式你也很美比心无野心系穿搭,毫不费力系时髦,最重要的是你知道她可以撑得起很难很复杂的设计风格,她穿的好看的你可以不种草但是她穿难看的你一定要君子孤独而自重孤独是一种状态,是一种内心的坚守和追求。对于君子来说,孤独却是一种品格和气度。君子孤独而自重,不仅是他们的一种修养,也是他们的一种境界。君子孤独,不是因为他没有朋友,而是他拒绝了与老了,退休金再高,也别给子女这两种钱,这不是抠门,是清醒图源自网络侵权请联系删除你心目中的退休生活是什么样?现在生活的节奏越来越快,许多人都期待着退休之后,生活节奏能够慢下来,多一点时间去享受生活的幸福。毕竟,退休对于很多人而言意味着有今日份心情在这个世界上,每个人都会经历悲伤,失望,幸福,喜悦,的感受,当我们失去所爱之人,经历了无法承受之疼,遇到了不可逆转的挫折时,我们会被深深地击垮,每当深夜,独自一人舔舐自己身上的伤口你摸摸我这布料,是不是做你女友的料春花秋月,是诗人们歌颂的情景,可是我对于它,却感到十分平凡。只有你嵌着梨涡的笑容,才是我眼中最美的景象。青翠的柳丝,怎能比及你的秀发碧绿涟漪,怎能比及你的眸子有时,我凝视床头你那张相思吟(之四)文张鲁丹一hr情丝未断思天涯,浪迹四海可为家。塞北飞雪尤可爱,不逊江南盛开花。二hr日光过隙已白头,往事并未与水流。也怨月老不牵线,留下一段相思愁。三hr茫茫人海识得君,天长日久成带你读诗会晤春天会晤春天我们走在草原上春天是一株株小草它们刚刚拱破土皮正在互相问好我们走在田野上春天是一棵棵小苗它们张开嫩嫩的嘴巴唱着绿色的歌谣我们走在树林里春天正在枝头上摇摇出一片片叶子还有待放看了50岁的董卿,我才发现头发不过肩裙子不上膝,气质又得体对于很多爱美的女人来说,50岁这个年纪是一个大关卡,整体气质从成熟过渡到了老年。但这个年龄阶段的女性恰恰不能在穿衣上犯懒,若是搭配的太过于随意,分分钟变大妈。而在娱乐圈中也不乏5040年后,继续撸起袖子!61岁李开复再出发,AI2。0为何引诸侯混战?每经记者赵雯琪杨昕怡每经编辑刘雪梅AI大模型赛道迎来另一名重磅创业者。3月19日下午,创新工场董事长兼首席执行官创新工场人工智能工程院院长李开复正式朋友圈官宣正在亲自筹组一个名为P56岁周慧敏晒照片与狗狗合照晒白发,皮肤白皙侧颜好美气质佳周慧敏在自己的个人社交账号上晒出了她探访自己之前支持的一个动物慈善机构的照片,还配上了一段小长文为这个机构做了介绍。在文中,她也表示对这慈善机构里面的狗狗的喜爱,还说了自己的裤子被