zoukankan      html  css  js  c++  java
  • 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();                                     
                                                               
        }                                                      
                                                               
    }                                                          
                                                               
  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/zdb292034/p/6104906.html
Copyright © 2011-2022 走看看