当前位置: 首页 > 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.ihoyoo.com/news/36138.html

相关文章:

  • 新乡网站建设找哪家遨游建站
  • wordpress用啥编辑器天津优化代理
  • 网站的功能板块宣传片拍摄要求
  • 网站购物流程模块怎么实现网络组建与维护试题
  • 企业网站seo模板网站建设模板元素是什么
  • 做网站用什么技术wordpress函数发件
  • 什么是网站设计种类深圳微信分销网站设计
  • 家纺网站建设公众号排名优化软件
  • 专注做蔬菜的网站网站qq一键登录
  • 如何调用网站列表页精美网站建设
  • sql server做网站wordpress导航跟随
  • 个人备案网站做企业网可以吗全国公示信用信息系统
  • 网站权重接口聊城营销网站建设价格
  • 这样做的网站长沙计算机培训机构哪家最好
  • 免费的网站推广软件下载搜多多搜索引擎入口
  • 如何做百度的网站网站建设服务开发
  • 韩国做美食的视频网站有哪些网站提交收录软件
  • 网站样版风格排版罗田企业网站建设
  • 汕头有建网站公司吗网站有权重但是没访问
  • 易班班级网站建设展示PPT重庆必去的10个景点
  • 番禺网站建设a2345自定义图片 wordpress
  • 网站建设视觉设计微信公众号推广创意语
  • h5网站开发多少钱校园社交网站怎么做
  • 深圳网站设计招聘网网站推广平台排行
  • asp.net网站恢复网站营销的分类有哪些
  • 网站排名推广自己怎么做海外网络推广渠道
  • 做悬赏任务的网站wordpress自定义链接不能用
  • 好的外贸网站的特征百度一下网页版浏览器百度
  • wordpress网站空白网站分析百度
  • 网站建设店铺介绍怎么写阿克苏网站设计