摘要: 一个比较简单的设计模式,主要有三种角色,请求者,中间者,接收者。将方法的请求和执行分隔开,两者之间通过中间对象来调用,为了方便拓展,需要将中间者抽象。 请求者类 public class Invoker { Command command; public Invoker(Command comman 阅读全文
posted @ 2020-04-27 09:08 Vinlen 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 这个比较难理解,先看例子,你家里要装修,要打造一个家具,你爸和商场里的人说了要预定沙发 沙发的属性 public class Product { //沙发的底 private String partA;//沙发的靠枕 private String partB;//沙发的皮 private Strin 阅读全文
posted @ 2020-04-26 17:07 Vinlen 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 首先,需要了解一下java设计模式6大原则中的开闭原则:只对 拓展开放,修改关闭。也就是你可以继承我的类来进行拓展,但不能重写我的方法。 如果将方法比喻为工厂,对象成为产品,工厂模式就是调用固定的方法来创建固定的对象,但是如果想添加新产品的时候会违反开闭原则。所以要将工厂方法和产品抽象化,添加新产品 阅读全文
posted @ 2020-04-26 16:21 Vinlen 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 原型模式也是23种设计模式里比较简单的模式之一,一句话概括原型模式,复制粘贴。类似windows上的复制粘贴,可以帮你克隆出一个新的对象,但是又和之前的不等(地址不一样,没有引用同一个对象) public class Yuanxing implements Cloneable { public Yu 阅读全文
posted @ 2020-04-26 15:42 Vinlen 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 作为23种设计模式里最简单的设计模式之一,单例模式顾名思义该类只能有一个实例对象,普通的类都是可以直接new 类名()来创建。想要只有一个实例,那就只能由该例创建,如果该例对象已经存在,则无法再创建 单例模式分为懒汉模式和饿汉模式。懒汉模式是类加载的时候该实例还没有创建,需要手动调用方法创建。 pu 阅读全文
posted @ 2020-04-26 15:24 Vinlen 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 先建一个一维数组String people[]={"上衣","衬衫","裤子","鞋子"}; 现在你就是这个people 你身上穿着上衣 衬衫 裤子 鞋子。 people[4];建一个二维数组 String family[][] = { {“上衣”,“衬衫”,“裤子”,“鞋子”}, {“上衣”,“衬 阅读全文
posted @ 2020-04-24 11:40 Vinlen 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: 之前的模板方法虽然解决了代码多余的问题,但是缺点也是显而易见的,我只能被迫接收所有继承的,所以有了这第二个模式 装饰者模式 还是之前的业务逻辑,现在我可以这么写 public interface Command(){ public void excute(); } //一个类来执行输出日志 publ 阅读全文
posted @ 2020-04-23 11:54 Vinlen 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 如果现在有一个电商网站,用户需要购买购买一件商品,我们需要在用户购买商品前做一些其他的事情,比如记录日志,进行性能统计,权限检查等等。按照面向对象的设计模式,应该把常用的方法抽出来在业务逻辑前后进行调用。这样虽然也可以完成逻辑,但是那些与日志,安全,事务,性能统计的相关代码快把真正的代码淹没了,不仅 阅读全文
posted @ 2020-04-23 11:30 Vinlen 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 先看名字,乐观锁和悲观锁,乐观的人会假设每一次的操作都是线程安全的,只有最后返回数据的时候才校验一下。悲观的人觉得每一次的操作都是不安全的,一次只能一个人进行操作。 有这样一个方法 public class Sequence(){ private int value; public synchron 阅读全文
posted @ 2020-04-23 10:57 Vinlen 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 假设有两个账户A和B在独立的数据库上,如果A要向B转账100元,在一致性要求下,A账户-100,B账户+100,这两个操作要么全部做完,要么全部不做。但是在互联网的环境下(高并发),这是不大容易做到的。所以后来有了一个消息队列 还是之前的例子,A的账户转100出来,需要在数据库1发起一个事务,从A的 阅读全文
posted @ 2020-04-23 09:23 Vinlen 阅读(112) 评论(0) 推荐(0) 编辑