23中设计模式

(一)设计模式的简介:

1.什么是设计模式?
2.设计模式有何作用?
答:使系统有很好的扩展性;是面向对象中反复出现的问题的解决方案;也是针对特定环境下特定问题的解决方法和方式;为软件重构提供了目标;
3.有哪几种设计模式?
答:有23中;分为三大类,创建型模式、结构型模式、行为型模式
其中创建型模式有5中:工厂模式、单利模式、抽象工厂模式、建造者模式、原型模式
4.设计模式用于哪些方面?
答:设计模式主要用于软件设计,作用:为软件开发人员提供平台;最佳的设计模式;
5.设计模式的原则?
6.了解demo的含义:电脑中的demo指展示电脑图片和音乐的一种程式;

(二)工厂模式

相关代码:

定义一个接口:

package zdbDesignPattern.factory;                                             
                                                                              
public interface Sharp {                                                      
    //定义一个形状接口,并有三个实现类                                                        
    //相应的网址:http://www.runoob.com/design-pattern/factory-pattern.html         
    public void draw();                                                       
}                                                                             
                                                                              

定义三个实现类:

package zdbDesignPattern.factory;           
                                            
public class Circle implements Sharp {      
                                            
    @Override                               
    public void draw() {                    
                                            
        System.out.println("circle");       
    }                                       
                                            
}                                           
        

package zdbDesignPattern.factory;            
                                             
public class Rectangle implements Sharp {    
                                             
    @Override                                
    public void draw() {                     
                                             
        System.out.println("Rectangle");     
    }                                        
                                             
}                                            



package zdbDesignPattern.factory;                       
                                                        
public class Square implements Sharp {                  
                                                        
    @Override                                           
    public void draw() {                                
        System.out.println("square");                   
                                                        
    }                                                   
                                                        
}                                                       
                                                        

                                    

创建一个工厂

package zdbDesignPattern.factory;                            
                                                             
public class SharpFactory {                                  
    //使用getSharp方法,可以获取形状类型的对象                               
    public Sharp getSharp(String sharp){                     
                                                             
        if(sharp==null){                                     
            return null;                                     
        }else if(sharp.equals("SQUARE")){                    
            return new Square();                             
        }else if(sharp.equals("RECTANGLE")){                 
            return new Rectangle();                          
        }else if(sharp.equals("CIRCLE")){                    
            return new Circle();                             
        }                                                    
        return null;                                         
                                                             
    }                                                        
}                                                            

使用该工厂,通过传递该类的信息获取该类的对象:

package zdbDesignPattern.factory;                           
                                                            
public class FactoryPatternDemo {                           
                                                            
    /**                                                     
     * @param args                                          
     */                                                     
    public static void main(String[] args){                 
        //创建工厂,利用工厂中的方法得到相应的对象                              
        SharpFactory sharpFactory = new SharpFactory();     
        //获取square对象,并调用他的方法                                
        Sharp sharp1 = sharpFactory.getSharp("SQUARE");     
        sharp1.draw();                                      
        //获取rectangle对象,并调用他的方法                             
        Sharp sharp2 = sharpFactory.getSharp("RECTANGLE");  
        sharp2.draw();                                      
        //获取circle对象,并调用他的方法                                
        Sharp sharp3 = sharpFactory.getSharp("CIRCLE");     
        sharp3.draw();                                      
                                                            
    }                                                       
                                                            
}                                                           
                                                            

 

(三)单例模式

创建一个类:

package zdbDesignPattern.singleton;                                  
                                                                     
public class SingleObject {                                          
    //创建一个SingleObject对象                                             
    private static SingleObject instance = new SingleObject();       
    //将构造函数私有化,这样该类就不会被私有化                                           
    private SingleObject(){};                                        
    //获取唯一可用的对象                                                      
    public static SingleObject getInstace(){                         
        return instance;                                             
    }                                                                
                                                                     
    public void show(){                                              
                                                                     
        System.out.println("北京 我来了!");                               
    }                                                                
}                                                                    

从singleObject中获取唯一的对象

package zdbDesignPattern.singleton;                        
                                                           
public class SinglePatternDemo {                           
                                                           
    /**                                                    
     * 从SingleObject中获取唯一的对象                               
     */                                                    
    public static void main(String[] args) {               
        //获取唯一的对象,并调用其方法                                   
        SingleObject object = SingleObject.getInstace();   
        object.show();                                     
                                                           
    }                                                      
                                                           
}                                                          
                                                           

 

posted @ 2016-11-26 18:44  美国大兵  阅读(242)  评论(0编辑  收藏  举报