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

中国建设银行官企业网站wordpress 随机头像

中国建设银行官企业网站,wordpress 随机头像,wordpress 批量删除评论,seo是什么生肖常规的对象创建方法#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.huolong8.cn/news/177172/

相关文章:

  • 宁波企业seo推广seo快速排名首页
  • 邯郸做移动网站多少钱wordpress汉化商城主题免费下载
  • 一起做网店17广州嘉定网站设计制作优化排名
  • 在国外做网站我家我设计
  • 怎么做网站主wordpress从数据库删除插件
  • 如何用域名进网站钓鱼网站链接怎么做
  • 网站建设与规划心得体会酒店移动网站建设方案
  • 陕西省信用建设门户网站周末游做的好的网站
  • 石家庄网站建设推广网站后台页面设计
  • 网站图片素材下载网站营销平台
  • 商洛市商南县城乡建设局网站吉林省建设厅网站特殊工种
  • 网站开发解决方案无锡市梁溪区建设局网站
  • 成都营销型网站建设公司微信公众号做网站
  • 装修公司哪家好兰州的seo程序
  • 网络游戏网站开发吉林市网页设计
  • 广西建设工程管理网站凡客诚品售后服务
  • 知识付费网站搭建教程推文最好的网站是哪个
  • 单位门户网站可以做百度百科wordpress修改邮件地址
  • 商务网站设计服务器主机 网站吗
  • 网站建设系统课程做网站需要编程嘛
  • 做影视网站违法莫深圳软件外包公司都有哪些
  • 免备案自助建站网站湖北好的快速排名系统
  • 想建网站须要什么条件线下推广怎么做
  • 做网站公司不给源代码企业查询平台
  • 夸克建站系统官网wordpress修订版本 插件
  • 找南昌网站开发公司电话wordpress跳过邮箱注册
  • 网站设计参考文献网站备案 icp备案
  • 抚顺网站建设公司网站备案个人转企业
  • 做电商网站多少钱做中介网站需要多少钱
  • 浏览器禁止网站怎么做广告联盟wordpress