![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 85
OldZhangYH
日拱一卒
展开
-
结构型模式之装饰者模式
装饰者模式可以在不改变现有对象结构的情况下,动态的给该对象增加一些职责(就是加一些额外的功能)。去快餐店点菜,我们可以点一个炒饭,然后加个蛋,加个牛肉。点一份炒饭就是具体构建类,加个蛋,加个牛肉就是额外添加的职责。 当然我们也可以使用继承的方式,让一个蛋炒饭继承炒饭,牛肉炒饭继承炒饭。但是这样的类或过多,而且扩展性不好。 类图如下,最关键的点就是ExtFood抽象类,他既继承了FastFood又引用了FastFood。 输出: 炒饭:10.0 炒饭加鸡蛋:11.0 炒饭加鸡蛋加牛肉:16.0IO流中的包装原创 2022-06-21 16:45:08 · 118 阅读 · 1 评论 -
结构型模式之适配器模式
将一个类的接口转换成客户希望的另一个接口,让原本因为接口不兼容不能一起工作的类可以一起工作。比如三叉插头转换成二叉插头。适配器分为两类:现在有一台电脑只能读SD卡,但是我们现在手上只有TF卡。因此我们要创建一个适配器来让电脑能读TF卡。当适配者有接口规范的时候才能用,不然就用不了。因为适配器不能继承两个类。 相对于类适配器,对象适配器把适配的的继承改成了引用。降低了耦合度 jdk中的字节字符转换流就用了适配器模式...原创 2022-06-21 11:04:36 · 133 阅读 · 0 评论 -
结构型模式之代理模式
一个对象A需要给某个对象B提供一个代理以控制对对象A的访问。这个时候访问对象C不适合或者不能直接引用目标对象,所以需要代理对象A作为一个访问对象C和被访问对象B的中介。(比如买电脑,我们都是从电脑城的经销商那里买,不可能直接从华硕的工厂拿货)。 代理模式分为两种:电脑厂家华硕按照出厂价卖给经销商电脑城,然后电脑城扩展了这个卖的功能加价2000再卖给消费者。 在动态代理的方式中,代理类是在程序运行的过程中自动生成的。因此我们是无法在文件中找到一个代表代理类的Java文件的。我们使用了一个类来生成代理类。要注意原创 2022-06-20 16:54:58 · 130 阅读 · 0 评论 -
六大设计原则大汇总
单一职责原则(Single responsibility principle) SRP单一职责原则就是说,一个类他只负责一件事情。这样子就比较好维护,不然的话,一个类里面就会有很多逻辑(if/else)堆在一起,变成一个屎山类。 比如对不同的用户类型,系统提供不同的功能 错误示范,这个代码把所有用户类型的功能逻辑都放在了一个类里面,然后使用if/else来判断。当之后要修改或者添加用户功能的时候,维护就会很复杂。违背了SRP原则 public class BadDemo { public void原创 2022-05-27 11:34:35 · 145 阅读 · 0 评论 -
创建者模式大汇总
单例模式确保了在整个系统中这个类只有一个对象被创建。他提供了一种访问他唯一的一个对象的方式,可以直接访问,不需要额外实例化对象。 单例模式有几个显著的特点:单例模式分为两类:类加载的时候就生成了对象,但是不用的话就很浪费内存. 静态代码块方法 上述的这两种方式其实差不多,就是在类里面new了一个私有静态变量,然后对外的方法只返回他。 怎么样是不是非常的简单,而且枚举类的实现方式是最安全的。不会被反射或者序列化破解。懒汉式在类被使用到的时候,才会生成对象避免了内存的浪费。这个方式就是在调用方法的时候会先判断原创 2022-06-19 10:21:28 · 487 阅读 · 0 评论