频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
设计模式学习方法 - 慧☆星 - 博客园
2019-05-09 14:37:16         来源:Roc.Lee  
收藏   我要投稿

设计模式学习方法 首先会看懂UML UML类图与类的关系详解

虚线箭头指向依赖;

\

上面是UML的语法。
设计模式分类

创建型模式

单件模式
结构型模式

适配器模式
行为型模式

职责链模式
比如《组合模式》的UML图

\ 意图

将对象组合成树形结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组vcD4KPGJyIC8mZ3Q7ysrTw9DUCgrE48/rse3KvrbUz/O1xLK/t9Yt1fvM5bLjtM694bm5oaMKxOPPo83708O7p7r2wtTX6brPttTP89PrtaW49rbUz/O1xLK7zayjrNPDu6e9q82z0ru12Mq508PX6brPveG5udbQtcTL+dPQttTP86GjCgoKCgoKCgoKCgoKPHA+PC9wPgo8cD64+b7dPHN0cm9uZz5VTUzW0LXEob60+sLrse3P1qG/PC9zdHJvbmc+0LSz9rbU06bKvsD9tPrC6zwvcD4KPGltZyBpZD0="code_img_closed_9f25c4a5-3aef-40ad-ac3d-77b13ecd65e2" class="code_img_closed" src="https://www.2cto.com/uploadfile/Collfiles/20190509/20190509134045479.gif" alt="\" />\// Composite pattern -- Structural example using System; using System.Collections; namespace DoFactory.GangOfFour.Composite.Structural { // MainApp test application class MainApp { static void Main() { // Create a tree structure Composite root = new Composite("root"); root.Add(new Leaf("Leaf A")); root.Add(new Leaf("Leaf B")); Composite comp = new Composite("Composite X"); comp.Add(new Leaf("Leaf XA")); comp.Add(new Leaf("Leaf XB")); root.Add(comp); root.Add(new Leaf("Leaf C")); // Add and remove a leaf Leaf leaf = new Leaf("Leaf D"); root.Add(leaf); root.Remove(leaf); // Recursively display tree root.Display(1); // Wait for user Console.Read(); } } // "Component" abstract class Component { protected string name; // Constructor public Component(string name) { this.name = name; } public abstract void Add(Component c); public abstract void Remove(Component c); public abstract void Display(int depth); } // "Composite" class Composite : Component { private ArrayList children = new ArrayList(); // Constructor public Composite(string name) : base(name) { } public override void Add(Component component) { children.Add(component); } public override void Remove(Component component) { children.Remove(component); } public override void Display(int depth) { Console.WriteLine(new String('-', depth) + name); // Recursively display child nodes foreach (Component component in children) { component.Display(depth + 2); } } } // "Leaf" class Leaf : Component { // Constructor public Leaf(string name) : base(name) { } public override void Add(Component c) { Console.WriteLine("Cannot add to a leaf"); } public override void Remove(Component c) { Console.WriteLine("Cannot remove from a leaf"); } public override void Display(int depth) { Console.WriteLine(new String('-', depth) + name); } } } View Code 总结

设计模式的主要思想其实很简单,就是:测试驱动开发。测试先行。意思是:先写测试代码,再去实现代码。

总结内容参考博文 https://www.cnblogs.com/wolf12/p/8736290.html

打赏

\

本文链接https://www.cnblogs.com/smartstar/p/10823694.html

点击复制链接 与好友分享!回本站首页
相关TAG标签 - - 博客园
上一篇:用私有构造器或者枚举类型强化Singleton - KuroNJQ - 博客园
下一篇:Lambda表达式。 - 张玉昊 - 博客园
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站