浏览代码

桥接模式

shengjie_yan 8 年之前
父节点
当前提交
1bf19e29a1

+ 4 - 0
BridgePattern/BridgePattern.csproj

@@ -43,12 +43,16 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Manager.cs" />
+    <Compile Include="ProductManger.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Project.cs" />
+    <Compile Include="ProjectManager.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="WebProject.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />
+    <None Include="ClassDiagram1.cd" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 39 - 0
BridgePattern/ClassDiagram1.cd

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ClassDiagram MajorVersion="1" MinorVersion="1">
+  <Class Name="BridgePattern.Manager">
+    <Position X="2" Y="0.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAQAAACAAAAAAAAAIAAAAAgAAAAAAAAAAgA=</HashCode>
+      <FileName>Manager.cs</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="BridgePattern.ProjectManager">
+    <Position X="0.5" Y="3.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAgA=</HashCode>
+      <FileName>Manager.cs</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="BridgePattern.ProductManger">
+    <Position X="2.75" Y="3.25" Width="2" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAQAAACAAAAAAAAAIAAAAACAAAAAAAAAAgE=</HashCode>
+      <FileName>Manager.cs</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="BridgePattern.Project">
+    <Position X="5.75" Y="0.5" Width="2" />
+    <TypeIdentifier>
+      <HashCode>AAAEQAAAAAQAAAAACAAAAAQAAAAAAACAAAAAAAEAAAE=</HashCode>
+      <FileName>Project.cs</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="BridgePattern.WebProject">
+    <Position X="5.75" Y="3.75" Width="2" />
+    <TypeIdentifier>
+      <HashCode>AAAEQAAAAAQAAAAAAAAAAAQAAAAAAACAAAAAAAEAAAE=</HashCode>
+      <FileName>Project.cs</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Font Name="Microsoft YaHei UI" Size="9" />
+</ClassDiagram>

+ 22 - 19
BridgePattern/Manager.cs

@@ -1,6 +1,4 @@
-using System;
-
-namespace BridgePattern
+namespace BridgePattern
 {
     public abstract class Manager
     {
@@ -11,26 +9,31 @@ namespace BridgePattern
             CurrentProject = currentProject;
         }
 
-        public virtual void ManageProject()
-        {
-            CurrentProject.MakePlan();
-            CurrentProject.ScheduleTask();
-            CurrentProject.ControlProcess();
-        }
-    }
+        /// <summary>
+        /// 制定计划
+        /// </summary>
+        public abstract void SchedulePlan();
 
+        /// <summary>
+        /// 任务分配
+        /// </summary>
+        public abstract void AssignTasks();
+
+        /// <summary>
+        /// 进度把控
+        /// </summary>
+        public abstract void ControlProcess();
 
-    public class ProjectManager : Manager
-    {
-        public ProjectManager(Project currentProject) : base(currentProject)
-        {
-        }
 
-        public override void ManageProject()
+        /// <summary>
+        /// 项目管理
+        /// </summary>
+        public virtual void ManageProject()
         {
-            Console.WriteLine($"负责[{base.CurrentProject.ProjectName}]开发:");
-            base.ManageProject();
-            Console.WriteLine($"[{base.CurrentProject.ProjectName}] 开发完成。");
+            SchedulePlan();
+            AssignTasks();
+            ControlProcess();
         }
+
     }
 }

+ 45 - 0
BridgePattern/ProductManger.cs

@@ -0,0 +1,45 @@
+using System;
+
+namespace BridgePattern
+{
+    /// <summary>
+    /// 产品经理
+    /// </summary>
+    public class ProductManger : Manager
+    {
+        public ProductManger(Project currentProject) : base(currentProject)
+        {
+        }
+        public override void SchedulePlan()
+        {
+            base.CurrentProject.MakePlan();
+        }
+
+        public override void AssignTasks()
+        {
+            base.CurrentProject.ScheduleTask();
+        }
+
+        public override void ControlProcess()
+        {
+            base.CurrentProject.ControlProcess();
+        }
+        public void AnalyseRequirement()
+        {
+            base.CurrentProject.AnalyzeRequirement();
+        }
+
+        public void DesignProduct()
+        {
+            base.CurrentProject.DesignProduct();
+        }
+        
+        public override void ManageProject()
+        {
+            Console.WriteLine($"产品经理负责【{base.CurrentProject.ProjectName}】:");
+            AnalyseRequirement();
+            DesignProduct();
+            base.ManageProject();
+        }
+    }
+}

+ 4 - 2
BridgePattern/Program.cs

@@ -11,9 +11,11 @@ namespace BridgePattern
         static void Main(string[] args)
         {
             Project webProject = new WebProject("Web项目");
-            Manager manager = new ProjectManager(webProject);
+            Manager projectManager = new ProjectManager(webProject);
+            Manager productManager = new ProductManger(webProject);
 
-            manager.ManageProject();
+            projectManager.ManageProject();
+            productManager.ManageProject();
 
             Console.ReadLine();
         }

+ 28 - 23
BridgePattern/Project.cs

@@ -1,6 +1,4 @@
-using System;
-
-namespace BridgePattern
+namespace BridgePattern
 {
     public abstract class Project
     {
@@ -11,33 +9,40 @@ namespace BridgePattern
             ProjectName = projectName;
         }
 
+        /// <summary>
+        /// 需求分析
+        /// </summary>
+        public abstract void AnalyzeRequirement();
+
+        /// <summary>
+        /// 产品设计
+        /// </summary>
+        public abstract void DesignProduct();
+
+        /// <summary>
+        /// 制定计划
+        /// </summary>
         public abstract void MakePlan();
 
+        /// <summary>
+        /// 任务分解
+        /// </summary>
         public abstract void ScheduleTask();
 
+        /// <summary>
+        /// 进度把控
+        /// </summary>
         public abstract void ControlProcess();
 
-    }
+        /// <summary>
+        /// 产品发布
+        /// </summary>
+        public abstract void ReleaseProduct();
 
-    public class WebProject : Project
-    {
-        public WebProject(string projectName) : base(projectName)
-        {
-        }
+        /// <summary>
+        /// 后期运维
+        /// </summary>
+        public abstract void MaintainProduct();
 
-        public override void MakePlan()
-        {
-            Console.WriteLine($"[{base.ProjectName}]:制定项目计划");
-        }
-
-        public override void ScheduleTask()
-        {
-            Console.WriteLine($"[{base.ProjectName}]:制作任务清单");
-        }
-
-        public override void ControlProcess()
-        {
-            Console.WriteLine($"[{base.ProjectName}]:把控项目进度");
-        }
     }
 }

+ 35 - 0
BridgePattern/ProjectManager.cs

@@ -0,0 +1,35 @@
+using System;
+
+namespace BridgePattern
+{
+    /// <summary>
+    /// 项目经理
+    /// </summary>
+    public class ProjectManager : Manager
+    {
+        public ProjectManager(Project currentProject) : base(currentProject)
+        {
+        }
+
+        public override void SchedulePlan()
+        {
+            base.CurrentProject.MakePlan();
+        }
+
+        public override void AssignTasks()
+        {
+            base.CurrentProject.ScheduleTask();
+        }
+
+        public override void ControlProcess()
+        {
+            base.CurrentProject.ControlProcess();
+        }
+
+        public override void ManageProject()
+        {
+            Console.WriteLine($"项目经理负责【{base.CurrentProject.ProjectName}】:");
+            base.ManageProject();
+        }
+    }
+}

+ 47 - 0
BridgePattern/WebProject.cs

@@ -0,0 +1,47 @@
+using System;
+
+namespace BridgePattern
+{
+    public class WebProject : Project
+    {
+        public WebProject(string projectName) : base(projectName)
+        {
+        }
+
+        public override void AnalyzeRequirement()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:进行需求分析");
+
+        }
+
+        public override void DesignProduct()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:进行产品设计");
+        }
+
+        public override void MakePlan()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:制定项目计划");
+        }
+
+        public override void ScheduleTask()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:制作任务清单");
+        }
+
+        public override void ControlProcess()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:把控项目进度");
+        }
+
+        public override void ReleaseProduct()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:产品发布");
+        }
+
+        public override void MaintainProduct()
+        {
+            Console.WriteLine($"[{base.ProjectName}]:后期运维");
+        }
+    }
+}