当前位置: 首页 > news >正文

网站开发实习个人小结安顺北京网站建设

网站开发实习个人小结,安顺北京网站建设,做网站需要会的软件,开网店需要什么准备常规的对象创建方法#xff1a; //创建一个Road对象 Road road new Road(); new 的问题#xff1a; 实现依赖#xff0c;不能应对“具体实例化类型”的变化。解决思路#xff1a; 封装变化点-----哪里变化#xff0c;封装哪里 潜台词#xff1a; 如果没有变…常规的对象创建方法 //创建一个Road对象 Road road new Road(); new 的问题     实现依赖不能应对“具体实例化类型”的变化。解决思路     封装变化点-----哪里变化封装哪里     潜台词 如果没有变化当然不需要额外的封装工厂模式的缘起     变化点在“对象创建”因此就封装“对象创建”     面向接口编程----依赖接口而非依赖实现最简单的解决方法 1 class RoadFactory{ 2 public static Road CreateRoad() 3 {                                 4   return new Road();    5 } 6 } 7 //创建一个Road对象 8 Road roadroadFactory.CreateRoad(); 创建一系列相互依赖对象的创建工作 假设一个游戏开场景 我们需要构造道路、房屋、地道从林...等等对象工厂方法如下 1     class RoadFactory  2     {  3         public static Road CreateRoad()  4         {  5             return new Road();  6         }  7         public static Building CreateBuilding()  8         {  9             return new Building(); 10         } 11         public static Tunnel CreateTunnel() 12         { 13             return new Tunnel(); 14         } 15         public static Jungle CreateJungle() 16         { 17             return new Jungle(); 18         } 19     } 调用方式如下 1         Road road   RoadFactory.CreateRoad(); 3         Building building  RoadFactory.CreateBuilding(); 4         Tunnel tunnel  RoadFactory.CreateTunnel(); 5         Jungle jungle  RoadFactory.CreateJungle(); 如上可见简单工厂的问题     不能应对不同系列对象的变化。比如有不同风格的场景---对应不同风格的道路房屋、地道....如何解决     使用面向对象的技术来封装变化点。动机(Motivate)     在软件系统中经常面临着一系统相互依赖的对象的创建工作同时由于需求的变化往往存在更多系列对象的创建工作。     如何应对这种变化如何绕过常规的对象创建方法new),提供一种封装机制来避免客户程序和这种多系列具体对象创建工作的紧耦合意图(Intent):     提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。                                                  ----《设计模式》GOF结构图Struct):             适用性     1.一个系统要独立于它的产品的创建、组合和表示时。     2.一个系统要由多个产品系统中的一个来配置时。     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。     4.当你提供一个产品类库而只想显示它们的接口不是实现时。生活例子                结构图代码实现 1  abstract class AbstractFactory 2     { 3        public abstract AbstractProductA CreateProductA(); 4        public abstract AbstractProductB CreateProductB(); 5     } 1   abstract class AbstractProductA 2     { 3        public abstract void Interact(AbstractProductB b); 4     } 1   abstract class AbstractProductB 2     { 3        public abstract void Interact(AbstractProductA a); 4     }    1    class Client  2     {  3         private AbstractProductA AbstractProductA;  4         private AbstractProductB AbstractProductB;  5         public Client(AbstractFactory factory)  6         {  7             AbstractProductA  factory.CreateProductA();  8             AbstractProductB  factory.CreateProductB();             9         } 10         public void Run() 11         { 12             AbstractProductB.Interact(AbstractProductA); 13             AbstractProductA.Interact(AbstractProductB); 14         } 15     }  1  class ConcreteFactory1:AbstractFactory  2     {  3         public override AbstractProductA CreateProductA()  4         {  5             return new ProductA1();  6         }  7         public override AbstractProductB CreateProductB()  8         {  9             return new ProductB1(); 10         } 11     }  1     class ConcreteFactory2:AbstractFactory  2     {  3         public override AbstractProductA CreateProductA()  4         {  5             return new ProdcutA2();  6         }  7         public override AbstractProductB CreateProductB()  8         {  9             return new ProductB2(); 10         } 11     } 1  class ProductA1:AbstractProductA 2     { 3         public override void Interact(AbstractProductB b) 4         { 5             Console.WriteLine(this.GetType().Name  interact with  b.GetType().Name); 6         } 7     } 1   class ProductB1:AbstractProductB 2     { 3         public override void Interact(AbstractProductA a) 4         { 5             Console.WriteLine(this.GetType().Name  interact with  a.GetType().Name); 6         } 7     } 1   class ProdcutA2:AbstractProductA 2     { 3         public override void Interact(AbstractProductB b) 4         { 5             Console.WriteLine(this.GetType().Name  interact with  b.GetType().Name); 6         } 7     } 1  class ProductB2:AbstractProductB 2     { 3         public override void Interact(AbstractProductA a) 4         { 5             Console.WriteLine(this.GetType().Name  interact with  a.GetType().Name); 6         } 7     } 1    public static void Main()  2         {  3          // Abstractfactory1  4             AbstractFactory factory1  new ConcreteFactory1();  5             Client c1  new Client(factory1);  6             c1.Run();  7         // Abstractfactory2  8             AbstractFactory factory2  new ConcreteFactory2();  9             Client c2  new Client(factory2); 10             c2.Run(); 11         } Abstract Factory注意的几点     如果不存在”多系列对象创建“的需求变化则没必要应用Abstract Factory模式静态工厂方法足矣。    系列对象指的是这些对象之间有相互依赖、或作用的关系。例如游戏开发场景中的道路与房屋依赖“道路”与“地道”的依赖。Abstract Factory模式主要在于应对新系列的需求变动。其缺点在于难以应对”新对象“的需求变动。Abstract Factory模式经常和Factory Method模式共同组合来应对“对象创建”的需求变化。   分类: 设计模式, 1.首页原创精华.NET区 好文要顶 关注我 收藏该文   王晓成关注 - 1粉丝 - 108 加关注 1 0 « 上一篇 单件模式(Singleton Pattern) » 下一篇 建造者模式(Builder) posted on 2007-08-29 17:25  王晓成  阅读(15809)  评论(3)  编辑  收藏 Feedback #1楼 2008-05-21 09:08 xingxi public static Road CreateRoad()  4 {  5 return new Road();  6 }  7 public static Building CreateBuilding()  8 {  9 return new Building();  10 }  11 public static Tunnel CreateTunnel()  12 {  13 return new Tunnel();  14 }  15 public static Jungle CreateJungle()  16 {  17 return new Jungle();  18 }  此段代码中Building、Road 等是在何处定义的啊  谢谢给予明示 支持(0) 反对(0) #2楼 2008-07-08 01:57 21212 --引用-------------------------------------------------- xingxi: public static Road CreateRoad() 4 { 5 return new Road(); 6 } 7 public static Building CreateBuilding() 8 { 9 return new Building(); 10 } 11 public static Tunnel CreateTunnel() 12 { 13 return new Tunnel(); 14 } 15 public static Jungle CreateJungle() 16 { 17 return new Jungle(); 18 } 此段代码中Building、Road 等是在何处定义的啊谢谢给予明示 --------------------------------------------------------  这还用定义吗这篇文章说的是一种设计模式不是教你定义类。
http://www.pierceye.com/news/679429/

相关文章:

  • 做网站专题页的字大小是多少购物商城排名
  • 门窗东莞网站建设技术支持海口快速建站模板
  • 公司网站制作第三方网站浮窗制作
  • 网站需要服务器吗?万州网站建设
  • 网站关键词可以修改吗做响应式网站字体需要响应么
  • 公司网站设计怎么做农家乐联盟网站
  • 普通网站报价多少扬中论坛网
  • 提供邢台做wap网站网站开发怎么进行数据库连接
  • 足球网站网站建设东莞网上销售网站建设
  • 响应式网站手机蓝翔老师做的网站
  • 公司网站建设维护合同中德生态园网站定制
  • 网站建设实训结论站长查询工具
  • 做电影网站要很大的主机空间吗苏州网站推广如何
  • 网站维护内容及费用网站详细设计
  • 国产手机做系统下载网站七牛云做wordpress图床
  • 营销型网站建设网站百度文库账号登录入口
  • 医疗网站建设资讯国内十大游戏公司排名
  • 江苏网站建设网络公司男做基视频网站
  • 网站建设培训公司排名客户管理软件免费版
  • 甘肃省建设工程网上投标网站好玩的网游
  • 大学生网站建设课程总结唐四薪php网站开发答案
  • 郑州的网站建设公司有哪些企业策划案
  • 查询域名网站苏州专业网站seo推广
  • 游戏网站建设计划书梦织做网站
  • 电商运营公司简介seo搜索引擎优化求职简历
  • 烟台门户网站有哪些网站做的比较好的
  • 外贸企业论坛网站建设找建站公司做网站注意事项
  • 莱芜亓家网站网站认证怎么认证
  • 安康做网站的公司wordpress zh_cn.po
  • 温州网页网站制作怎么看一个网站有没有做301