作业二:读书笔记----软件设计原则、设计模式

这个作业属于哪个课程 2022软件代码开发技术
这个作业要求在哪里 读书笔记----软件设计原则、设计模式
这个作业的目标 1. 结合一些图、表工具,对设计模式相关书籍的主要内容进行归纳总结。
2. 设计模式的示范
这个作业属于哪个课程 2022软件代码开发技术

参考书目:Android 源码设计模式解析与实战(第2版)

一、设计原则

Bob大叔总结:五个基本原则

单一职责
开闭原则

软件中的对象应该对于扩展是开放的,对于修改是封闭的:重要手段:抽象,接口支持泛型可以使程序更容易扩展

里氏替换原则

LSP原则 只要父类能出现的地方,子类可以进行替换而不出错

依赖倒置原则

DIP Dependence Inversion Principle解耦

高层模块不应该依赖低层模块,两者都应该依赖其抽象
抽象不应该依赖细节
细节应该依赖抽象

接口隔离原则

ISP InterfaceSegregation Principles客户端不应该依赖它不需要的接口

另:

迪米乐原则

类负责的事情要明确,解耦,应该只需要关心最少的东西

二、常用设计模式

常用的包括:单例模式、Builder模式、原型模式、工厂模式、抽象工程模式、策略模式、状态模式、责任链模式、解释器模式、命令模式

框架模式:MVC、MVP、MVVM

部分的简单介绍:

单例模式

Java实现版本

//方式一 饿汉式:提前生成
class Singleton{
    private static Singleton singleton=new Singleton();
    private Singleton(){}
    public static Singleton getInstrance(){
        return singleton;
    }
}
public class Test{
    public static void main(String[] args){
        Singleton singleton=Singleton.getInstrance();
    }
}
//方式二 懒汉式:用的时候再创建
class Singleton{
    private static Singleton singleton;
    private Singleton(){}
    public static Singleton getInstrance(){
        if(singleton==null){
            singleton=new Singleton;
        }
        return singleton;
    }
}
public class Test{
    public static void main(String[] args){
        Singleton singleton=Singleton.getInstrance();
    }
}
//方式三 线程安全的懒汉式:volatile保证内存可见性,DCL双重检查锁定
class Singleton{
    private static volatile Singleton singleton;
    private Singleton(){}
    public static Singleton getInstrance(){
        if(singleton == null){
        	synchronized(Singleton.class){
            	if(singleton == null{
            		singleton=new Singleton;
            	}
        	}
        }
        return singleton;
    }
}
public class Test{
    public static void main(String[] args){
        Singleton singleton=Singleton.getInstrance();
    }
}
//方式四 巧妙运用jdk的线程安全单例模式:利用枚举类
//使用:EnumSingleton.INSTANCE.method();
public enum  EnumSingleton {
    INSTANCE;
    public method(){}
}

Builder模式

常用来进行链式的进行配置(return builder;)

原型模式

主要是通过克隆的方式完成

浅拷贝(影子拷贝)、深拷贝

对于会拷贝引用对象的都需要对他们进行clone才能成深拷贝

三、总结与反思

对于常用的设计模式在编写代码中经常有用到,但是对于其他的设计模式很不熟悉。对于单例模式,最后通过jdk妙用的方式可以很方便的使用。

在单例模式中,几乎每个项目都会用到,通过它可以轻松的获取全局的资源,但同样因为它贯穿于整个程序的生命周期,使用应该尽可能的少将资源放到全局的单例中。

实际使用:

public enum Filter {
    INSTANCE;

    private List<NearbyInfo> filterList = new ArrayList<>();

    Filter() {
        initParam();
    }

    private void initParam() {
    	
    }

    public void updateFilterList(List<NearbyInfo> originList){
        filterList.clear();
        filterList.addAll(originList);
    }

    public List<FiltrateBean> getFilterList(){
        return filterList;
    }
}
posted on 2022-03-07 11:34  CNLih0755  阅读(38)  评论(0编辑  收藏  举报