• 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. } 

  • 相关阅读:
    【BZOJ2879】【NOI2012】美食节(费用流)
    HN2018省队集训
    【HDU5421】Victor and String(回文树)
    【BZOJ2878】【NOI2012】迷失游乐园(动态规划)
    【BZOJ5338】[TJOI2018]异或(主席树)
    【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)
    【BZOJ2436】【NOI2011】NOI嘉年华(动态规划)
    【BZOJ2437】【NOI2011】兔兔与蛋蛋(博弈论,二分图匹配)
    【BZOJ2109/2535】【NOI2010】航空管制(贪心)
    【BZOJ1565】【NOI2009】植物大战僵尸(网络流)
  • 原文地址:https://www.cnblogs.com/to-creat/p/5547920.html
Copyright © 2020-2023  润新知