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

云霄网站建设wordpress静态占用内存

云霄网站建设,wordpress静态占用内存,wordpress工具栏,主机屋网站在那注册从Rob Pike 的 Google上的一个推看到了一篇叫《Understanding Object Oriented Programming》的文章#xff0c;我先把这篇文章简述一下#xff0c;然后再说说老牌黑客Rob Pike的评论。 先看这篇教程是怎么来讲述OOP的。它先给了下面这个问题#xff0c;这个问题需要输出一段…  从Rob Pike 的 Google上的一个推看到了一篇叫《Understanding Object Oriented Programming》的文章我先把这篇文章简述一下然后再说说老牌黑客Rob Pike的评论。   先看这篇教程是怎么来讲述OOP的。它先给了下面这个问题这个问题需要输出一段关于操作系统的文字假设Unix很不错Windows很差。   这个把下面这段代码描述成是Hacker Solution。这帮人觉得下面这叫黑客我估计这帮人真是没看过C语言的代码   public class PrintOS { public static void mainfinal String[] args { String osName System.getPropertyos.name ; if osName.equalsSunOS || osName.equalsLinux { System.out.printlnThis is a UNIX box and therefore good. ; } else if osName.equalsWindows NT || osName.equalsWindows 95 { System.out.printlnThis is a Windows box and therefore bad. ; } else { System.out.printlnThis is not a box. ; } } } 然后开始用面向对象的编程方式一步一步地进化这个代码。   先是以过程化的思路来重构之。   过程化的方案   public class PrintOS { private static String unixBox { return This is a UNIX box and therefore good. ; } private static String windowsBox { return This is a Windows box and therefore bad. ; } private static String defaultBox { return This is not a box. ; } private static String getTheStringfinal String osName { if osName.equalsSunOS || osName.equalsLinux { return unixBox ; } else if osName.equalsWindows NT ||osName.equalsWindows 95 { return windowsBox ; } else { return defaultBox ; } } public static void mainfinal String[] args { System.out.printlngetTheStringSystem.getPropertyos.name ; } } 然后是一个幼稚的面向对象的思路。   幼稚的面向对象编程   PrintOS.java   public class PrintOS { public static void mainfinal String[] args { System.out.printlnOSDiscriminator.getBoxSpecifier。getStatement ; } } OSDiscriminator.java   public class OSDiscriminator // Factory Pattern { private static BoxSpecifier theBoxSpecifier null ; public static BoxSpecifier getBoxSpecifier { if theBoxSpecifier null { String osName System.getPropertyos.name ; if osName.equalsSunOS || osName.equalsLinux { theBoxSpecifier new UNIXBox ; } else if osName.equalsWindows NT || osName.equalsWindows 95 { theBoxSpecifier new WindowsBox ; } else { theBoxSpecifier new DefaultBox ; } } return theBoxSpecifier ; } } BoxSpecifier.java   public interface BoxSpecifier { String getStatement ; } DefaultBox.java   public class DefaultBox implements BoxSpecifier { public String getStatement { return This is not a box. ; } } UNIXBox.java   public class UNIXBox implements BoxSpecifier { public String getStatement { return This is a UNIX box and therefore good. ; } } WindowsBox.java   public class WindowsBox implements BoxSpecifier { public String getStatement { return This is a Windows box and therefore bad. ; } } 他们觉得上面这段代码没有消除if语句他们说这叫代码的“logic bottleneck”逻辑瓶颈因为如果你要增加一个操作系统的判断的话你不但要加个类还要改那段if-else的语句。   所以他们整出一个叫Sophisticated的面向对象的解决方案。   OO大师的方案   注意其中的Design Pattern   PrintOS.java   public class PrintOS { public static void mainfinal String[] args { System.out.printlnOSDiscriminator.getBoxSpecifier。getStatement ; } } OSDiscriminator.java   public class OSDiscriminator // Factory Pattern { private static java.util.HashMap storage new java.util.HashMap ; public static BoxSpecifier getBoxSpecifier { BoxSpecifier value BoxSpecifierstorage.getSystem.getPropertyos.name ; if value null return DefaultBox.value ; return value ; } public static void registerfinal String key, final BoxSpecifier value { storage.putkey, value ; // Should guard against null keys, actually. } static { WindowsBox.register ; UNIXBox.register ; MacBox.register ; } } BoxSpecifier.java   public interface BoxSpecifier { String getStatement ; } DefaultBox.java   public class DefaultBox implements BoxSpecifier // Singleton Pattern { public static final DefaultBox value new DefaultBox ; private DefaultBox { } public String getStatement { return This is not a box. ; } } UNIXBox.java   public class UNIXBox implements BoxSpecifier // Singleton Pattern { public static final UNIXBox value new UNIXBox ; private UNIXBox { } public String getStatement { return This is a UNIX box and therefore good. ; } public static final void register { OSDiscriminator.registerSunOS, value ; OSDiscriminator.registerLinux, value ; } } WindowsBox.java   public class WindowsBox implements BoxSpecifier // Singleton Pattern { public static final WindowsBox value new WindowsBox ; private WindowsBox { } public String getStatement { return This is a Windows box and therefore bad. ; } public static final void register { OSDiscriminator.registerWindows NT, value ; OSDiscriminator.registerWindows 95, value ; } } MacBox.java   public class MacBox implements BoxSpecifier // Singleton Pattern { public static final MacBox value new MacBox ; private MacBox { } public String getStatement { return This is a Macintosh box and therefore far superior. ; } public static final void register { OSDiscriminator.registerMac OS, value ; } } 作者还非常的意地说他加了一个“Mac OS”的东西。老实说当我看到最后这段OO大师搞出来的代码我快要吐了。我瞬间想到了两件事一个是以前酷壳上的《面向对象是个**》和 《各种流行的编程方式》中说的“设计模式驱动编程”另一个我想到了那些被敏捷洗过脑的程序员和咨询师也是这种德行。   于是我去看了一下第一作者Joseph Bergin的主页这个Ph.D是果然刚刚完成了一本关于敏捷和模式的书。   Rob Pike的评论   Rob Pike是当年在Bell lab里和Ken一起搞Unix的主儿后来和Ken开发了UTF-8现在还和Ken一起搞Go语言。注不要以为Ken和Dennis是基友其实他们才是真正的老基友   Rob Pike在他的Google的这贴里评论到这篇文章——   他并不确认这篇文章是不是搞笑但是他觉得这些个写这篇文章是很认真的。他说他要评论这篇文章是因为他们是一名Hacker至少这个词出现在这篇文章的术语中。   他说这个程序根本就不需要什么Object只需要一张小小的配置表格里面配置了对应的操作系统和你想输出的文本。这不就完了。这么简单的设计非常容易地扩展他们那个所谓的Hack Solution完全就是笨拙的代码。后面那些所谓的代码进化相当疯狂和愚蠢的这个完全误导了对编程的认知。   然后他还说他觉得这些OO的狂热份子非常害怕数据他们喜欢用多层的类的关系来完成一个本来只需要检索三行数据表的工作。他说他曾经听说有人在他的工作种用各种OO的东西来替换While循环。我听说中国Thoughtworks那帮搞敏捷的人的确喜欢用Object来替换所有的if-else语句他们甚至还喜欢把函数的行数限制在10行以内   他还给了一个链接http://prog21.dadgum.com/156.html你可以读一读。最后他说OOP的本质就是——对数据和与之关联的行为进行编程。便就算是这样也不完全对因为   Sometimes data is just data and functions are just functions.   我的理解   我觉得这篇文章的例子举得太差了差得感觉就像是OO的高级黑。面向对象编程注重的是1数据和其行为的打包封装2程序的接口和实现的解耦。你那怕举一个多个开关和多个电器的例子不然就像STL中一个排序算法对多个不同容器的例子都比这个例子要好得多得多。老实说Java SDK里太多这样的东西了。   我以前给一些公司讲一些设计模式的培训课我一再提到那23个经典的设计模式和OO半毛钱关系没有只不过人家用OO来实现罢了。设计模式就三个准则1中意于组合而不是继承2依赖于接口而不是实现3高内聚低耦合。你看这完全就是Unix的设计准则。转载于:https://www.cnblogs.com/javaitpx/archive/2012/12/27/2835447.html
http://www.zqtcl.cn/news/680580/

相关文章:

  • 广水住房和城乡建设部网站简单网页制作代码html
  • 建设网站找什么仿门户网站
  • 贵阳手机网站建设公司沈阳图书设计公司
  • 哪里做网站比较好在哪里注册域名
  • 做搜狗pc网站软件下载广告设计与制作学什么
  • 软件工程 旅游网站开发er图昆山网站建设网站建设
  • 网站下载的网页修改下面版权所有企业建设营销型网站的目的有
  • 官方重大项目建设库网站手机ps软件如何做ppt下载网站
  • 全国加盟网站大全海尔网站建设目标
  • wordpress 企业站模版自己做视频网站可以吗
  • 建设电子商务网站的方法有广东网站开发收费
  • php网站页面转wordpress网站广告代码
  • 在线网站建设教程网站版面布局结构
  • 网站建设提议网站建设怎么在图片上加字
  • 网站模板但没有后台如何做网站家政网站开发
  • 自己办网站审批流程网页设计师的发展路径
  • 什么叫网站地图百度竞价排名费用
  • 企业网站建设顾问wordpress如何用API采集
  • win7网站后台无法编辑vr网站建设
  • 做头发个人网站制作素材dw中做网站的步骤
  • 学校网站做几级等保网页制作与维护
  • 十堰外贸网站建设松滋做网站
  • 网站导航条青浦徐泾网站建设
  • 厦门网站建设一般多少钱店铺域名是什么意思
  • 网站关键词搜索排名怎么做雅奇小蘑菇做网站好不好用
  • 手机网站案例建设网站地图素材
  • 企业网站制作比较好的如何设计一个网页首页代码
  • 维护网站成本网站建设进度图
  • asp.net做织梦网站设计手机网站建设
  • 江苏省住房和城乡建设局网站首页北京大型网站制作公司