zoukankan      html  css  js  c++  java
  • java:常用的两种设计模式(单例模式和工厂模式)

    一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
    (1)定义一个类,它的构造方法是私有的,有一个私有的静态的该类的变量在初始化的时候就实例化,通过一个公有的静态的方法获取该对象。
    Java代码 
    1. //单例模式的第一种形式    
    2. public class Singleton01 {    
    3.    
    4.     // 私有的静态属性    
    5.     private static Singleton01 instance = new Singleton01();    
    6.    
    7.     // 私有的构造方法    
    8.     private Singleton01() {    
    9.     }    
    10.    
    11.     // 公有的静态方法    
    12.     public static Singleton01 getInstance() {    
    13.         return instance;    
    14.     }    
    15. }  
    (2)改进后的
    Java代码 
    1. public class Singleton02 {    
    2.    
    3.     // 私有的静态的类变量    
    4.     private static Singleton02 instance = null;    
    5.    
    6.     // 私有的构造方法    
    7.     private Singleton02() {    
    8.     }    
    9.    
    10.     // 静态的公有的方法    
    11.     public static Singleton02 getInstance() {    
    12.         if (instance == null) {    
    13.             instance = new Singleton02();    
    14.         }    
    15.         return instance;    
    16.     }    
    17. }  

    二、工厂模式:生产不同对象的公共接口
    (1)   产品接口
    Java代码 
    1. //产品接口    
    2. public interface Product {    
    3.    
    4. }  
    (2)产品接口的实现类
    Java代码 
    1. //洗衣机    
    2. public class Washer implements Product {    
    3.    
    4.     public Washer(){    
    5.         System.out.println("洗衣机被制造了!");    
    6.     }    
    7. }  
    Java代码 
    1. //空调    
    2. public class AirCondition implements Product {    
    3.    
    4.     public AirCondition(){    
    5.         System.out.println("空调被制造!");    
    6.     }    
    7. }  
    (3)工厂接口
    Java代码 
    1. //工厂接口    
    2. public interface Factory {    
    3.    
    4.     //生产产品    
    5.   Product produce(String productName);    
    6.             
    7. }  
    (4)工厂的实现类
    Java代码 
    1. //实现工厂    
    2. public class TestFactory implements Factory {    
    3.    
    4.     //生产产品    
    5.     public Product produce(String productName) {    
    6.         if (productName.equals("Washer")) {    
    7.             return new Washer();    
    8.         }    
    9.         if (productName.equals("AirCondition")) {    
    10.             return new AirCondition();    
    11.         }    
    12.         return null;    
    13.     }    
    14.    
    15.     public static void main(String[] args) {    
    16.         TestFactory testFactory = new TestFactory();    
    17.         testFactory.produce("Washer");    
    18.         testFactory.produce("AirCondition");    
    19.     }    
    20. } 

  • 相关阅读:
    Spring中的@Transactional(rollbackFor = Exception.class)属性详解
    查询数据库中表数量和各表中数据量
    69道Spring面试题和答案
    Spring常见面试题总结(超详细回答)
    nginx 解决session一致性
    redis 主从同步
    如何实现一个线程安全的单例,前提是不能加锁
    InnoDB中一棵B+树能存多少行数据
    ConcurrentHashMap 源码分析
    java HashMap 源码解析
  • 原文地址:https://www.cnblogs.com/to-creat/p/5547920.html
Copyright © 2011-2022 走看看