谈23种设计模式

来源:互联网 发布:悟 无人机 知乎 编辑:程序博客网 时间:2024/05/18 15:57

    最近看了一本书叫java的设计模式。这本书感觉很有意思。因为在我觉得编程是一种思想,技术终有学到头的那一天。而会了思想。很多事情就事半功倍了,而且有助于我将来向其他语言的转型。这本书我至少翻了4,5遍。感觉这部书就像三国一样每次读都有不同的体会。下面我谈谈对java23中设计模式的理解。
    记得以前ivan老师给我讲集合的时候,那个时候我只知道迭代器是用来遍历集合用的,所以我仅仅是会用,但是我从来没有想过迭代器的实现原理是什么为什么这样就能遍历。但是我看了java设计模式之后我知道迭代器是java一种重要的设计模式之一。从他的内部结构我明白了迭代器的原理。我明白hasNext()和next()的内部构造。所以现在即使一个集合摆在我面前我也能用自己写的类让集合遍历出来。所以我认为思想比会代码重要的多。
    后来老师给我们讲了一些高级java,我吃惊的发现很多东西都是用java的设计模式走出来的。比如说一个类不想创建他的对象就调用他的static方法,就是说白了就是用了一个单列模式,将构造函数私有化,用静态方法创建对象。而单列模式又分为懒汉模式和饥汉模式。而懒汉模式在引用时候才创建对象。所以要用同步进程锁,来确保多进程下的创建一个对象。所以自然我又把进程的同步问题给看了一遍。所以这样的学习我感觉很有意思。因为比较主动。
    记得以前做购物车其实完全可以用工厂模式来设计这个购物车的,这是可以后来才知道工厂模式的好处。但是学了工厂模式,很幸运不久就用上了嘿嘿。就在上个星期田永利老师在讲用java解析xml的时候。开始得获取document对象,DocumentBuilderFactory d = DocumentBuilderFactory.newInstance();DocumentBuilder db = d.newDocumentBuilder();Document document = (Document) db.parse(new File("student.xml"));其实这三部就是用了一个工厂模式和单列模式的混合应用吧。至少我感觉是这样,因为我代码量太少,所以很多东西只能在日后去实践。还有在IO流这里面,就有修饰模式在里面。总之感觉java处处都用设计模式。
    后来我看了许多模式,像适配器模式,模板模式,观察者模式,装饰模式,外观模式,策略模式……我是一个新手我不可能把这些模式灵活的应用,第一基于代码量的不够,还有对低层不是很熟,第三感觉不到这些精髓奥妙。所以很多地方体会不到他的优越性。但是我会努力,因为我会记住它,我自我感觉我还是会学习的人,首先我知道很多东西不是一遍就会的,那么我就会想一些适合自己的方法记忆的方法。比如说外观模式,我想到了一个笑话就是:有事秘书干,没事干秘书。 什么是秘书干呢?因为老板很懒很有派。所以老板是一个不愿意随便的出手的人,也不愿意正面接触其他事物的人。所以秘书是承接老板和外部事物的桥梁。老板来一声指令,秘书就必须实现外部各种事物,比如说买票,买东西,开会等等。那么拥有这种关系的事物就是外观模式,其实现实生活中老板也是这样干的哈哈。所以外观模式就很好记了。在这里我又想到了继承,我在一视频这么看到一个一句话对继承的描述。说的是既然老子会吃喝嫖赌,那么儿子那必须比老子霸道,那么儿子要不仅会吃喝嫖赌,当然还得有奸淫掳虐。这就是继承。从这个事情中我可以明确知道一点,继承好比父子,子是继承,所以得强过父亲这是继承存在的本质意义。说道了继承我又想到了适配器模式了,说道了适配器模式,我自己也想到了一个笑话。难道世上只有一个人会吃喝嫖赌吗?当然不是,这也可以说明吃喝嫖赌是很多男人的本性,所以我们将吃喝嫖赌聚合为一个类的方法。这个人有这样的方法,别人人也有,这样的关系应该谈不是继承,所以就得用到适配器模式。你看对不?呵呵。
   我的理解java23种设计模式贯穿java,他的出现应该是为了减少内存开销,高内聚低耦合,使面向对象这一思想方法更加淋漓尽致,是编程面向接口不是面向实体。
   同时我还有其他的想法,我比较喜欢看书的前言,因为23种设计模式之中得符合6大设计准则,这应该就是官方对设计模式解释吧。而且很多设计模式也有弊端,因为不能都得符合。那么同理只要写出符合6大准则的东西,那么他应该可以称的上是第24种模式了吧。思想才是灵魂。
    记得以前老师给我讲集合的时候,那个时候我只知道迭代器是用来遍历集合用的,所以我仅仅是会用,但是我从来没有想过迭代器的实现原理是什么为什么这样就能遍历。但是我看了java设计模式之后我知道迭代器是java一种重要的设计模式之一。从他的内部结构我明白了迭代器的原理。我明白hasNext()和next()的内部构造。所以现在即使一个集合摆在我面前我也能用自己写的类让集合遍历出来。所以我认为思想比会代码重要的多。
    后来老师给我们讲了一些高级java,我吃惊的发现很多东西都是用java的设计模式走出来的。比如说一个类不想创建他的对象就调用他的static方法,就是说白了就是用了一个单列模式,将构造函数私有化,用静态方法创建对象。而单列模式又分为懒汉模式和饥汉模式。而懒汉模式在引用时候才创建对象。所以要用同步进程锁,来确保多进程下的创建一个对象。所以自然我又把进程的同步问题给看了一遍。所以这样的学习我感觉很有意思。因为比较主动。
    记得以前做购物车其实完全可以用工厂模式来设计这个购物车的,这是可以后来才知道工厂模式的好处。但是学了工厂模式,很幸运不久就用上了嘿嘿。就在上个星期老师在讲用java解析xml的时候。开始得获取document对象,DocumentBuilderFactory d = DocumentBuilderFactory.newInstance();DocumentBuilder db = d.newDocumentBuilder();Document document = (Document) db.parse(new File("student.xml"));其实这三部就是用了一个工厂模式和单列模式的混合应用吧。至少我感觉是这样,因为我代码量太少,所以很多东西只能在日后去实践。还有在IO流这里面,就有修饰模式在里面。总之感觉java处处都用设计模式。
    后来我看了许多模式,像适配器模式,模板模式,观察者模式,装饰模式,外观模式,策略模式……我是一个新手我不可能把这些模式灵活的应用,第一基于代码量的不够,还有对低层不是很熟,第三感觉不到这些精髓奥妙。所以很多地方体会不到他的优越性。但是我会努力,因为我会记住它,我自我感觉我还是会学习的人,首先我知道很多东西不是一遍就会的,那么我就会想一些适合自己的方法记忆的方法。比如说外观模式,我想到了一个笑话就是:有事秘书干,没事干秘书。 什么是秘书干呢?因为老板很懒很有派。所以老板是一个不愿意随便的出手的人,也不愿意正面接触其他事物的人。所以秘书是承接老板和外部事物的桥梁。老板来一声指令,秘书就必须实现外部各种事物,比如说买票,买东西,开会等等。那么拥有这种关系的事物就是外观模式,其实现实生活中老板也是这样干的哈哈。所以外观模式就很好记了。在这里我又想到了继承,我在一视频这么看到一个一句话对继承的描述。说的是既然老子会吃喝嫖赌,那么儿子那必须比老子霸道,那么儿子要不仅会吃喝嫖赌,当然还得有奸淫掳虐。这就是继承。从这个事情中我可以明确知道一点,继承好比父子,子是继承,所以得强过父亲这是继承存在的本质意义。说道了继承我又想到了适配器模式了,说道了适配器模式,我自己也想到了一个笑话。难道世上只有一个人会吃喝嫖赌吗?当然不是,这也可以说明吃喝嫖赌是很多男人的本性,所以我们将吃喝嫖赌聚合为一个类的方法。这个人有这样的方法,别人人也有,这样的关系应该谈不是继承,所以就得用到适配器模式。你看对不?呵呵。
   我的理解java23种设计模式贯穿java,他的出现应该是为了减少内存开销,高内聚低耦合,使面向对象这一思想方法更加淋漓尽致,是编程面向接口不是面向实体。
   同时我还有其他的想法,我比较喜欢看书的前言,因为23种设计模式之中得符合6大设计准则,这应该就是官方对设计模式解释吧。而且很多设计模式也有弊端,因为不能都得符合。那么同理只要写出符合6大准则的东西,那么他应该可以称的上是第24种模式了吧。思想才是灵魂。
   现阶段我看设计模式是希望能够更好的理解java。希望对高级java有个更深层次的理解。呵呵。但是现在很多模式只是能看懂,用不到实际应用。
我的崇拜的境界是:让代码充满灵魂!

原创粉丝点击