软件构造复习感悟

最近在期末复习,总结了一些软件构造的小知识点,以便复习。
string.trim()方法不改变字符串string的内容
mutable类型可以避免多个引用改变同一个变量。
规约不是只给用户看的,程序员也需要看,可以明确责任划分,方便编程。

对于集合,Java一般用的是观察等价性。

synchronized是Java中的关键字,是一种同步锁。它可以用来锁住几个操作,使其变成原子操作。
Collections.synchronizedMap(new HashMap<>());
Collections.synchronizedSet(new HashSet<>());
Collections.synchronizedList(new Arraylist<>());
以上三个方法可以将线程不安全的集合类转化成线程安全的集合类。
一般来说,只有一定不会被修改的变量才是线程安全的。
我们需要修改哪一个对象,而这个对象的修改又会导致线程不安全问题,那么我们就可以使用synchronized将当前对象锁起来。
对于锁,我们不能在static方法上加锁,因为static方法是和对象关联的,如果锁了该方法,那么其它对象所有访问该方法的操作都不能执行,这和我们的初衷不符合。

对于死锁,也就是多个线程竞争lock,相互等待对方释放lock的问题,我们可以使用排序或者将所有锁合成成一个的方法。排序也就是使用对象的某个属性进行排序,然后决定锁的顺序,例如名字。而合成我们可以将所有的相同的类都锁到一起。

注释中我们需要写明Thread Safe Argument,也就是说明该类的使用中是否会产生线程不安全,而我们使用了什么方法来保证线程安全,其实方法也不过四类:
1.不访问数据(一般不可能做到)
2.immutable的数据类型
3.线程安全的数据类型(但是不能保证线程安全)
4.加锁。

Java的clone相当于copy一个相同的对象,而这个操作是浅拷贝,只复制了引用,而不复制
对象本身。

Java中不支持泛型数组,像T[] a =new T
[10]这样的代码是编译错误的。

软件构造中涉及到的设计模式有三大类
1.结构模式:
1.适配器模式
2.装饰模式
3.门面模式
4.代理模式(区别门面模式和适配器模式,这种模式是为了阻隔用户和ADT,在之间设立防火墙)
2.行为模式
1.策略模式
2.模板模式
3.迭代器模式
4.观察者模式
5.访问者模式
3.创建模式
1.工厂模式,分为抽象工厂和工厂两种

对于接口和抽象类来说,Java中是无法实例化的,所以我们可以在接口中加入一个静态的工厂方法。

对于软件来说,可复用的不只是代码,还包括所有实体(数据,文档,spec等等)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值