java设计模式

1、设计模式
面向对象的设计原则:开闭原则(对修改关闭,对扩展开发)

1、单例
概述:内存中只能存在一个该类的对象
饿汉式:对象的初始化过程在类加载的时候就已经完成
懒汉式:调用方法的时候再创建对象,需要注意线程安全问题

开发中建议使用饿汉式,面试两种都要说明

/**
 * 饿汉式:对象的初始化过程在类加载的时候就已经完成
 * 在开发中建议使用
 * @author hao
 *
 */
public classConfiguration {

       private staticConfiguration conf = new Configuration();
       public staticConfiguration getInstance(){
              return conf;
       }

       privateConfiguration(){
       }
}


/**
 * 懒汉式:调用方法的时候再创建使用
 * 在面试中建议使用
 * @author hao
 *
 */
public classConfiguration {

       private staticConfiguration conf = null;
       public static synchronizedConfiguration getInstance(){
              if(conf ==null){
                     conf = newConfiguration();
              }
              return conf;
       }

       privateConfiguration(){
       }
}

2、工厂模式
概述
创建对象的事情,可能比较复杂的,所以创建对象的这个逻辑我们应该定义到专门的一个类里面,这个类专门负责创建各种对象实例,那么这个类就被称为工厂类

简单工厂和工厂模式的区别
简单工厂:一个工厂可以创建多个对象,如果要添加对象,那应该修改工厂
工厂模式:一个工厂对应一个对象,换句话说 一个工厂只能创建一个对象,如果我要创建这个对象,第一步应该先创建工厂对象,然后通过工厂对象来创建对象。如果要添加对象,只需要再新增一个工厂即可,更符合开闭原则

比如说,我们现在有很多动物类,猫,狗,猪 …
而这些动物有相同的行为, eat()。
抽取一个共同的父类。动物。

   简单工厂模式:
       Animal
             |--Dog
             |--Cat
          AnimalFactory
                 public static Animal createAnimal(String type){
                      if("dog".equals(type)){
                            return new Dog();
                      }else if("cat".equals(type)){
                            return new Cat();
                      }else {
                            return null;
                      }
                 }
   工厂方法模式:
       Animal
             |--Dog
             |--Cat
             |--Pig

       AnimalFactory
             |--DogFactory
             |--CatFactory
             |--PigFactory

3、包装设计模式
概述
对一个已知类,类的原始行为要保留住而且对于某一个方法或者给类增加一些新的内容,这种情况下使用包装设计模式

编写步骤
1、编写一个类,实现与被包装类相同的接口 或者 继承被包装类
2、定义一个引用(变量名),需要记住被包装对象的引用
3、定义构造方法,传入被包装类的对象实例
4、改写需要增强的方法
5、对于不需要增强的方法,调用原有对象的方法

以下代码是个包装类,包装BufferedReader,增加打印行的功能

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class MyBufferedReader extends BufferedReader{
       private BufferedReader br ;
       private int number= 1;
       public MyBufferedReader(BufferedReader br){
              super(br);
              this.br = br;
       }

       public String readLine() throws IOException{
              if(br.readLine() == null)
                     return null;
              return number+++br.readLine();
       }

       public static void main(String[] args) throws Exception {
              MyBufferedReader reader = new MyBufferedReader(new BufferedReader(new FileReader("d://giftsstore.log")));
              String line = null;
              while((line=reader.readLine()) != null){
                     System.out.println(line);
              }
       }
}

4、模板设计模式
概述:
模版设计模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现
模板类最好是一个抽象类,里面包含抽象方法和非抽象方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一套对代码设计经验的总结,被人们反复利用,并且很多人都熟知的代码设计方式。其中,单例模式是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这种模式有几个好处,比如可以节约系统资源,提高程序效率,以及提供一个全局访问点等。在实现单例模式时,可以采用饿汉式单例模式,即在类加载时创建一个对象,并通过私有构造器和静态方法来保证对象的唯一性。另外,工厂方法模式也是Java中常用的设计模式之一。在工厂方法模式中,可以定义一个工厂类,该类负责创建对象的实例,并将其封装在一个工厂方法中。通过这种方式,可以实现对象的创建与使用的分离,提高代码的灵活性和可维护性。总的来说,Java设计模式是一种用于解决特定问题的通用解决方案,可以提高代码的重用性、可读性和可扩展性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java常用设计模式](https://blog.csdn.net/qq_33327680/article/details/123815614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JAVA中23种设计模式](https://blog.csdn.net/qw_0214/article/details/78878531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值