设计模式

1、简单工厂模式

当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节。

比如需要加减乘除类,只需要传入正确的符号,就可以返回正确的类。

2、策略模式:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。

分析下定义,策略模式定义和封装了一系列的算法,它们是可以相互替换的,也就是说它们具有共性,而它们的共性就体现在策略接口的行为上,另外为了达到最后一句话的目的,也就是说让算法独立于使用它的客户而独立变化,我们需要让客户端依赖于策略接口。

涉及到三个角色:

环境角色:持有一个Strategy的角色

抽象策略角色:通过一个接口或者抽象类实现,给出所有具体策略类所需的接口。

具体策略角色:包装了相关的算法或行为。

即将具体依赖于实际不同情况的算法抽象出来,然后在具体类中去实现,当需要某种类时,即将相关参数传入简单工厂类,工厂给出具体的对象,对象调用具体的算法。

3、装饰模式

 

  • Component为统一接口,也是装饰类和被装饰类的基本类型。
  • ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。
  • Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。
  • ConcreteDecorator是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。

装饰器的价值在于装饰,他并不影响被装饰类本身的核心功能。

4、代理模式

创建一个代理类,代理类使用被代理类构造,且调用被代理类的方法。

5、工厂方法模式

创建一个工厂抽象类,然后给每个具体方法创建一个子类,让子类决定具体创建哪一种对象,与简单工厂相比,工厂方法符合开放封闭原则。

6、原型模式

创建一个原型,给该原型创建一个clone函数,然后创建相似对象时,只要调用clone函数复制一个对象,然后修改细节即可。

7、模板方法模式

将不同实现的相同步骤写到同一个父类的方法中去,该方法同样包括不同步骤的虚方法,虚方法的在子类中完成具体实现。

8、外观模式

在外观类中集成了子系统中的类,并将需要调用的一系列方法,集中在外观类中,这样实现了对子系统中各类的隐藏。

9、建造者模式(不懂,再看看)

客户不需要知道对象具体的建造过程,只需要利用一个指挥者类来得到具体的对象就行了。

10、观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一主题对象。这个主题对象在发生变化时,会通知所有观察者对象。

11、状态模式

依据状态的转变来决定实例化哪个子类。

12、适配器模式

当两个类不同,但是接口方法相似时,可以使用一个子类包装另一个不同接口,使接口行为类似。

13、备忘录模式

设置一个备忘录类,当另一个类可能会改变时,将细节备份在备忘录类中,之后再用该备忘录类设置该类。

14、迭代器模式

提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

实现要点:访问一个聚合对象的内容而无需暴露它的内部表示。

迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。

迭代器的健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题。

15、单例模式

讲一个类的构造函数设为private,同时在public中写一个专门的方法,让该类只能存在一个类对象。

16命令模式

设一个commond类,子类实现具体不同commond方法,同时定义一个接收者类集成一个任务队列去控制这些命令。

适用性:

①:系统需要支持命令的撤消(undo)。命令对象可以把状态存储起来,等到客户端需要撤销命令所产生的效果时,可以调用undo()方法,把命令所产生的效果撤销掉。命令对象还可以提供redo()方法,以供客户端在需要时,再重新实施命令效果。

②:需要在不同的时间指定请求、将请求排队。一个命令对象和原先的请求发出者可以有不同的生命期。换言之,原先的请求发出者可能已经不在了,而命令对象本身仍然是活动的。

③:如果一个系统要将系统中所有的数据更新到日志里,以便在系统崩溃时,可以根据日志里读回所有的数据更新命令,重新调用Execute()方法一条一条执行这些命令,从而恢复系统在崩溃前所做的数据更新。

17  中介者模式

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。

18 享元模式

当一个程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用,享元模式是建立一个享元工厂,在需要具体对象时,若需要的类已经存在实例,则复用该实例。

19 访问者模式

1)访问者(Visitor)
    访问者抽象接口,通过visit(Element)方法访问Element(数据结构),完成对Element的操作行为。

2)具体访问者(ConcreteVisitor)
    访问者的具体实现类。

3)元素(Element),也就是被访问者
    通过accept(Visitor)方法接受Visitor的访问。

4)具体元素(ConcreteElement)
    元素的具体实现类。

5)对象结构(ObjectStructure)
    拥有一组元素的组合对象。ObjectStructure本身也可以作为被访问者。

在element类中使用一个accept对象来接受一个访问者,同时访问者对该实例进行操作。这样实现了数据结构和具体操作的解耦。

在Objectstruct类中维护一个结构类实例的队列,并对其遍历。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

内容概要:文章详细介绍了ETL工程师这一职业,解释了ETL(Extract-Transform-Load)的概念及其在数据处理中的重要性。ETL工程师负责将分散、不统一的数据整合为有价值的信息,支持企业的决策分析。日常工作包括数据整合、存储管理、挖掘设计支持和多维分析展现。文中强调了ETL工程师所需的核心技能,如数据库知识、ETL工具使用、编程能力、业务理解能力和问题解决能力。此外,还盘点了常见的ETL工具,包括开源工具如Kettle、XXL-JOB、Oozie、Azkaban和海豚调度,以及企业级工具如TASKCTL和Moia Comtrol。最后,文章探讨了ETL工程师的职业发展路径,从初级到高级的技术晋升,以及向大数据工程师或数据产品经理的横向发展,并提供了学习资源和求职技巧。 适合人群:对数据处理感兴趣,尤其是希望从事数据工程领域的人士,如数据分析师、数据科学家、软件工程师等。 使用场景及目标:①了解ETL工程师的职责和技能要求;②选择适合自己的ETL工具;③规划ETL工程师的职业发展路径;④获取相关的学习资源和求职建议。 其他说明:随着大数据技术的发展和企业数字化转型的加速,ETL工程师的需求不断增加,尤其是在金融、零售、制造、人工智能、物联网和区块链等领域。数据隐私保护法规的完善也使得ETL工程师在数据安全和合规处理方面的作用更加重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值