码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员———基础视频中涉及的几个设计模式

时间:2014-12-01 22:35:16      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:java   黑马程序员   基础   

 
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 
package o_oriented;
/*
  设计模式:
     解决某一问题最行之有效的方法。java中有23种设计模式。
 
  单例设计模式:
     解决一个类在内存只存在一个对象。
 
  思路:
     1.为了避免其他程序过多的建立该类对象,先禁止其他程序访问该类对象。
     2.但又为了其他程序访问到该类对象,则在该类中自定义一个对象。
     3.对外提供一个方法,可以访问该类对象。
 
 步骤:
     1.构造函数私有化。
     2.在类中创建一个本类对象。
     3.创建一个公有方法,获取该类对象。
     
 注意:对于事物,该怎么描述怎么描述,该创建变量则创建变量,该创建功能则创建功能。
     当需要保证该类对象在内存中具有唯一性时,则可以使用单例设计模式。
     
 例如:配置文件。   
            修改配置文件中的参数,修改多次也好,也是修改一个对象的值。
 */
public class SingleDemo {
     public static void main(String[] args)
     {
            Single ss = Single. getInstance();
            ss. setCountry( "China");
            Single ss1 = Single. getInstance();
            System. out.println (ss1 .getCountry ());
     }
}

class Single
{
     private String country;

     public String getCountry() {
            return country ;
     }

     public void setCountry (String country ) {
            this.country = country ;
     }

     private Single(){
           
     }
     
     private static Single s = new Single();
     
     public static Single getInstance()
     {
            return s ;
     }
}


====================================================================================================

package o_oriented;
/*
  饿汉式:
 class Single {
     private Single(){}
     private static Single s = new Single();
     public static Single getInstance() {
           return s;
     }
 
    这个先初始化对象。
 Single类一进内存,就已经创建好了对象。
 
 注意:在开发时,用饿汉式。懒汉式在面试当中比较常见,通过结合多线程来解释。
 */

public class SingleDemo2 {
     public static void main(String[] args)
     {
           
     }
     
}
/*
 懒汉式:
 对象是方法被调用时,才初始化,也叫做对象的延时加载。
 Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。双重判断机制
 */
class Single {
     private Single(){}
     private static Single s = null;
     public static Single getInstance() {
            if( s == null)
           {
                 synchronized(Single .class)
                {
                      if( s == null)
                            s = new Single();
                }
           }
            return s ;
     }
}
====================================================================================================
模板方法设计模式:

package o_oriented2;
/*
  模板方法设计模式
需求:获取一段程序运行的时间。
原理:获取程序开始和结束的时间并相减即可。
     获取时间方法:System.currentTimeMillis();
     
当代码完成优化后,就可以解决这类问题了。
     这种方式,称为模板方法设计模式
     
什么是模板方法?
     在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,
     那么这时就将不确定的部分暴漏出去,由该类的子类去完成。     
     
     保证获取功能唯一,不被复写,用final
 */
public class TemplateDemo
{
     public static void main(String[] args)
     {    
            SubTime sb = new SubTime();
            sb. getTime();
     }
}

abstract class GetTime
{
     public final void getTime()
     {
            long start = System .currentTimeMillis();
            runCode();
            long end = System .currentTimeMillis();
            System. out.println ("time: " +(end - start ));
     }
     
     public abstract void runCode();
}

class SubTime extends GetTime
{
     public void runCode ()
     {
            for( int x = 0; x< 4000; x++)
           {
                 System. out.println (x );
           }
     }
}

====================================================================================================

package cn.itcast.IO2;
/*
 装饰设计模式:
     当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
           那么自定义的该类称为装饰类。
     装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。

 */

//普通类
class Person
{
     public void eat ()
     {
            System. out.println ("吃饭" );
     }
}

//装饰类,增强Person类的功能。
class SuperPerson
{
     private Person p;
     SuperPerson( Person p)
     {
            this.p = p;
     }
     
     public void superEat ()
     {
            System. out.println ("开胃酒" );
            p. eat();
            System. out.println ("甜点/餐后水果" );
     }
}

public class PersonDemo {

     public static void main(String[] args) {
            Person p = new Person();
            SuperPerson sp = new SuperPerson( p);
            sp. superEat();
     }

}
 
 
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

黑马程序员———基础视频中涉及的几个设计模式

标签:java   黑马程序员   基础   

原文地址:http://blog.csdn.net/u013898489/article/details/41651965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!