![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java语言设计模式
熟悉设计模式,是编写出优质代码的必要条件
Sharpen__
展望未来往往比思考当下来的容易,不去行动终是空想、妄想。
展开
-
装饰者模式_设计模式
装饰者模式的定义装饰者模式:动态的将新功能附加到对象上。对对象功能扩展方面,比继承更有弹性。原理:1)装饰者模式就像打包一个快递主体:比如:陶瓷、衣服 //被装饰者包装:比如:报纸填充、塑料泡沫、纸板2)主体:比如类似前面的Drink3)ConcreteComponent 和DecoratorConcreteComponent:具体的主体比如前面的各个单品咖啡4)装饰者 :比如各种调料所有的类都直接或间接继承父类。public class CoffeeBar { publ原创 2020-09-03 15:44:38 · 107 阅读 · 0 评论 -
桥接模式_设计模式
传统方案解决手机问题:缺点:1)扩展性问题(类爆炸),如果再增加手机的样式,就需要增加各个品牌手机的类。2)违反了单一职责原则桥接模式1)将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。2)是一种结构型设计模式3)该模式是基于类的最小设计模式,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。主要特点:把抽象(abstraction)与行为实现(implementation)分离开来,从而保持各个部分的独立性已经功能的扩展性。uml类图:public class Cli原创 2020-09-02 11:36:36 · 97 阅读 · 0 评论 -
适配器模式_设计模式
基本介绍:1)适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。2)适配器模式属于结构型模式3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理:1)适配器模式:将一个类的接口转换成另一个接口,让原本接口不兼容的类兼容2)用户的角度看不到被适配这,是解耦的。3)用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法4)用户收到反馈结果,感觉只是和目标接口交互。类适配器模式原创 2020-09-01 21:11:42 · 101 阅读 · 0 评论 -
建造者模式_设计模式
盖房子的需求:过程包括 大壮、砌墙、封顶。房子也是各种各样的普通房子、高楼大厦、别墅等。基本介绍:1)建造者模式幼教生成器模式,是一种对象构建模式。它可以将复杂的对象的建造过程抽象出来,是这个抽象过程的不同实现方法可以构造出不同表现的对象2)建造者模式 是一步一步建造的复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们。用户不需要知道具体的细节。建造者模式的四个角色uml类图:主要理解类与类之间的继承、实现、聚合等关系,搞清楚它们之间是如何通信的。public cla原创 2020-09-01 16:10:30 · 123 阅读 · 0 评论 -
原型模式_设计模式
以克隆羊为例:传统的解决方式public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { this.name = name; this.age = age; this.color = color; } pub原创 2020-09-01 11:49:12 · 286 阅读 · 0 评论 -
抽象工厂模式_设计模式
介绍:1)定义了一个interface用于创建相关或有依赖关系的对象簇。而无需致命具体的类2)抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。3)抽象工厂模式是对简单工厂模式的改进4)将工厂抽象成两层,AbsFactory(抽象工厂)和具体实现的工厂子类。public class PizzaStore { public static void main(String[] args) { OrderPizza orderPizza = new OrderPizza(n原创 2020-08-31 21:21:39 · 131 阅读 · 0 评论 -
工厂方法_设计模式
思路1:使用简单工厂模式,创建不同的简单工厂类。但是考虑到项目的规模,以及软件的可维护性,可扩展性不是特别好。思路2:使用工厂方法模式工厂方法模式介绍:1)工厂方法模式设计方案:将项目的实例化功能抽象成抽象方法,在不同的order子类中具体实现。2)定义了一个创建对象的抽象类,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。uml类图:实例代码:public class PizzaStore { public static void main(String[] args原创 2020-08-31 20:04:15 · 86 阅读 · 0 评论 -
简单工厂模式_设计模式
披萨项目体现:要求便于披萨种类的扩展,便于维护。传统的代码设计方式:这种设计方式便于理解,但是增加披萨种类的时候,需要修改代码。简单工厂的设计模式:OrderPizza相当于客户端 创建SimpleFactory类与GreekPizza CheesePizza产生依赖关系。public class PizzaStore { public static void main(String[] args) {// new OrderPizza(); //使用简原创 2020-08-31 17:17:28 · 84 阅读 · 0 评论 -
单例设计模式_设计模式
介绍:采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类提供一个取得其对象实例的方法(静态方法)。单例设计模式八中方式:1)饿汉式(静态变量)class Singleton{ private Singleton(){}//构造器私有化 private static final Singleton instance=new Singleton();//本类内部创建对象实例 public static Singleton getInstance(){//提供一个公共的静态方法原创 2020-08-31 14:40:25 · 93 阅读 · 0 评论 -
IDEA_uml类图_设计模式
介绍:1)统一建模语言,是一种用于软件系统分析和设计的语言工具,用于帮软件开发人员进行思考和记录思路的结果。2)uml本身是一套符号的规定,这些符号用于描述模型中的各个元素和它们的关系,比如 类、接口、实现、泛化、依赖、组合、聚合等。UML图分类:1)用例图2)静态结构图:类图、对象图、包图、组件图、部署图3)动态行为图:交互图(时序图、协作图)、状态图、活动图类图是米搜书类与类之间的关系的,为uml图的核心。uml类图:1)描述类(对象)本身的组成与类(对象)之间的各种静态关系。2)类原创 2020-08-31 11:03:53 · 1694 阅读 · 0 评论 -
迪米特法则_设计模式
1)一个对象应该对其它对象保持最少的了解2)类与类关系越密切,耦合度越大3)迪米特法则又称为最少知道原则,就是一个类对自己依赖的类知道的越少越好。4)更简单的定义就是:只与直接朋友通信5)直接朋友:每个对象都会与其它对象有耦合关系,只要两个对象之间有耦合,我们就说这两个对象之间就是朋友关系。耦合的方式有很多,依赖,关联,组合,聚合等。我们称出现成员变量,方法参数,方法返回值中的类为直接朋友,出现局部变量的类不是直接朋友。也就是陌生的类最好不要以局部变量的形式出现在类内部。举例说明:打印出学校总部原创 2020-08-30 19:30:10 · 95 阅读 · 0 评论 -
开闭原则_设计模式
介绍:一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。//使用方 用于绘图的类class GraphicEditor { public void drawShape(Shape s){ if(s.m_type==1){ }else if(s.m_type==2){ }else if(s.m_type==3){ } } public void原创 2020-08-30 18:26:32 · 99 阅读 · 0 评论 -
里氏替换原则_设计模式
继承性的思考:1)继承包含的含义:父类中凡是已经实现好了的方法,实际上是在设定规范和契约,虽然它不强求所有的子类必须遵循这些契约,但是如果子类对父类的方法随意修改,就会破坏继承体系。2)继承也会带来弊端。比如继承给程序带来侵入性,程序的可移植性降低,增加对象之间的耦合性。基本介绍:如果对每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都代换成o2时,程序p的行为都没有发生变换,那么类型T2是类型T1的子类型。所有引用积累的地方必须都能透明地使用其子类的对象原创 2020-08-30 16:10:17 · 70 阅读 · 0 评论 -
设计模式_依赖倒转
基本介绍:1)高层模块不应该依赖低层模块,二者应该依赖其抽象2)抽象不应该依赖细节,细节应该依赖抽象3)依赖倒转的思想:面向接口编程4)相对于细节的多变性,抽象的东西要稳定得多。抽象指的是接口或抽闲类,细节就是具体的实现类5)使用接口或抽象类的目的是制定规范,不涉及任何操作,把展示细节的任务交给实现类去完成。实现方案1:class Email{ public String getInfo(){ return "电子邮件信息:hello world"; }}原创 2020-08-29 18:33:36 · 166 阅读 · 0 评论 -
设计模式_单一职责原则
对于一个类而言,即一个类应该负责一项职责。如果A类负责不同的职责,比如职责1,职责2。当职责1变更需要改变类A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。单一职责方案1:这种方法虽然遵守单一职责原则,但是类分解过多class RoadVehicle{ public void run(String vehicle){ System.out.println(vehicle+"在公路上跑"); }}class AirVehicle{ pu原创 2020-08-29 16:08:26 · 69 阅读 · 0 评论 -
设计模式_接口隔离模式
基本介绍:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。让类B,类D实现接口,在类A,类C中提供依赖类B,类D的方法,调用类B,类D实现的方法,只需要提供类B,类D的类对象,作为参数即可。public interface Interface1 { public void operation1(); public void operation2(); public void operation3(); public void opera原创 2020-08-29 15:47:22 · 106 阅读 · 0 评论