设计模式

1、java接口、抽象类的好处

依赖倒置原则:

     A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

    B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

抽象是稳定的,实现的变化不会影响到抽象的调用,因为调用的是抽象的方法,所以修改实现时候不需要修改调用的语句。

举个例子:两数相加的例子,相加的数据来源于读取文件的类,这样做并不是很好,因为如果我的数据不是文件里的了,而是在数据库里,这样的话,为了不影响你现有的代码,你就只能将你的Reader类整个改头换面。

或者还有一种方式就是,你再添加一个DBReader类,然后把你所有使用Reader读取的地方,全部手动替换成DBReader,这样其实也还可以接受,那假设我有的从文件读取,有的从数据库读取,有的从XML文件读取,有的从网络中读取,有的从标准的键盘输入读取等等。

这时候就需要抽象接口来实现了?

所以我们最好的做法就是抽象出一个抽象类或者是接口,来表述数据读取的行为,然后让上面所有的读取方式所实现的类都实现这个接口,而我们的客户端,只使用我们定义好的接口,当我们的实现变化时,我只需要设置不同的实际类型就可以了,这样对于系统的扩展性是一个大大的提升。

针对上面简单的数据读取,我们可以定义如下接口去描述。

public interface Reader{                                                                                                 public int getA();                                                                                                                   public int getB();                                                                                                             }

而当使用不同的方法去读取数据的时候,我们就可以写出DBReader、FileReader、XMLReader、NetReader 让我们原来的Reader改名为FileReader去实现这个接口,这样计算器就依赖于抽象的接口,这个依赖是非常稳定的,因为不论你以后要从哪读取数据,你的两个获取数据的方法永远都不会变。

这样,我们让DBReader,XMLReader,NETReader,StandardOutPutStreamReader等等,都可以实现Reader这个接口,而我们的客户端调用依赖于一个Reader,这样不管数据是从哪来的,我们都可以应对自如,因为我根本不关心你是什么Reader,我只知道你能让我获得A和B这两个值就行了。

这便是我们依赖于抽象所得到的灵活性,这也是JAVA语言的动态特性给我们带来的便利

2、双重校验锁的懒汉模式

public class Singleton {  

    private static volatile Singleton instance = null;  

    private Singleton(){}  

    public static Singleton getInstance() {  

        if (instance == null) {  

            synchronized (Singleton.class) {  

                if (instance == null) {  

                    instance =new Singleton();  

                }  

            }  

        }  

        return instance;  

    }  

}  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,143评论 1 15
  • 设计模式自从推出就一直很火,个人的体验是,模式运用存乎于心,理解最重要。重点是几个理念,从理念出发去理解模式;面向...
    跨境避坑指南阅读 617评论 1 1
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    RamboLI阅读 852评论 0 1
  • 金子的原名叫良金,听起来不太像女孩儿的名字,因为原本就不是给女孩儿准备的,这是金子的爷爷留给自己孙子的。可惜,老爷...
    白灿阅读 935评论 0 0
  • 喜欢他说的那句话,“我就是我,颜色不一样的烟火”。 每年愚人节都会关注到全世界对他的怀念。 时光已去这么久,为何没...
    蓝胖说说阅读 3,786评论 47 154

友情链接更多精彩内容