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

  • 相关阅读:
    Leetcode 1349 参加考试的最大学生数
    卡特兰数小结
    Leetcode 76 最小覆盖字串 (滑动窗口)
    Leetcode 5331.跳跃游戏
    实现对properties文件的有序读写
    Android日志框架darks-logs使用教程
    Android入门-Service-start,end,bind,unbind之间的区别
    Android实用代码七段(一)
    [转帖]自动调整TextView字体大小以适应文字长度
    apk,task,android:process与android:sharedUserId的区别
  • 原文地址:https://www.cnblogs.com/to-creat/p/5547920.html
Copyright © 2011-2022 走看看