Loading

设计模式

菜鸟设计模式书面说明:https://www.runoob.com/design-pattern/design-pattern-tutorial.html

1、工厂方法模式

2、抽象工厂模式

  • 工厂方法模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行

  • 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

https://www.zhihu.com/question/27125796/answer/1615074467
简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。
工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。
抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量。

在下述情况下可以考虑使用工厂模式:
1、在编码时不能预见需要创建哪种类的实例。
2、系统不应依赖于产品类实例如何被创建、组合和表达的细节。

总之,工厂模式就是为了方便创建同一接口定义的具有复杂参数和初始化步骤的不同对象。工厂模式一般用来创建复杂对象。只需用new就可以创建成功的简单对象,无需使用工厂模式,否则会增加系统的复杂度。

在实际项目中,结合Spring中的InitializingBean接口,可以利@Autowired注解优雅的实现工厂。

3、建造者模式

建造者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

这种设计结构模型可以把重复的内容抽象到数据库中,按照需要配置。这样就可以减少代码中⼤量的重复。

4、原型模式

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

类implements Cloneable 接口,并重写clone方法
java对象如果想被克隆,它对应的类需要implements标志接口Cloneable。
如果不重写clone()方法,则在调用clone()方法实现的是浅复制(所有的引用对象保持不变,意思是如果原型里这些对象发生改变会直接影响到复制对象)。
重写clone()方法,一般会先调用super.clone()进行浅复制,然后再复制那些易变对象,从而达到深复制的效果。

通过克隆方式创建复杂对象、也可以避免重复做初始化操作、不需要与类中所属的其他类耦合等。但也有⼀些缺点如果对象中包括了循环引⽤的克隆,以及类中深度使用对象的克隆,都会使此模式变得异常麻烦。

posted @ 2022-01-02 14:05  kopoo  阅读(56)  评论(2编辑  收藏  举报