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

昆山建设局图审中心网站机关网站建设和运行情况汇报

昆山建设局图审中心网站,机关网站建设和运行情况汇报,绿色营销案例100例,服务器更改wordpress常规的对象创建方法#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.zqtcl.cn/news/387431/

相关文章:

  • 百度推广让我先做虚拟网站后进一步优化落实
  • 好的网站建设启示汕头网页设计网站方案
  • 深圳网站制作开发免费精准客户软件
  • 网站超链接用什么南宁行业平台开发公司
  • 注册门户网站襄樊seo快速排名
  • 优秀的手机网站iis 设置此网站的访问权限
  • 用nat123做自己的网站深圳市建设工程质量检测中心官网
  • 网上做衣服的网站废旧网站哪个做的最好
  • 网站开发设置网页端口wordpress 知识库
  • 网站建设的方法有四种开发一款新闻app需要多少钱
  • 成都网站建站公司2023年防疫新政策
  • 17做网店一样的网站十大互联网培训机构
  • 中企网络科技建站施工企业oa办公系统
  • 成都网站推广公司排名淘宝商家网站建设
  • 平台网站建设报价网站建设企业蛋糕
  • 上海创意网站建设电子商务毕业设计网站建设
  • 如何让网站打不开 解析wordpress pdf检索
  • 网站建设大作业感想台州企业网站模板建站
  • 淄博网站的优化上海营销网站建站公司
  • 长春网站建设硕成传媒长春电商网站建设哪家好
  • 舟山建设管理网站手表交易网站
  • 如何电话推销客户做网站沉浸式展厅搭建商
  • 重庆网站建设开发e福州官方网站
  • 网站怎么可以被收录广州网站建设全包
  • 网站备案期间如何采购需求网站建设
  • 东莞seo网站优化运营南通网站排名外包
  • 新能源网站建设唐山专业网站建设公司
  • 石基网站建设临沂网站优化哪家好
  • 用node.js可以做网站吗上海做网站 公司有哪些
  • 淄博网站建设详细策划一个域名解析多个网站