第六章--第二节:设计可维护模式

第六章:面向软件构造的可复用性的构建方法

第二节:设计可维护模式

问题一:可维护模式的分类

  1. 构建模式(Creational patterns)
  2. 结构模式(Structural patterns)
  3. 行为模式(Behavioral patterns)

问题二:构建模式(Creational patterns)

    1.工厂模式方法(Factory Method pattern

    方法:定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。

    用途:当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。

    理解:说到工厂方法,其实本质就是尽量避免Client使用SomeObject object = new SomeObject()这种可以直接使用new构建对象的方法。转而提供一些工厂类来避免暴露我的具体的类名。举个例子来说明,有一家餐馆,卖各种调料酱,这家店的老板告诉他的顾客,这些调料酱有沙拉酱,烧烤酱和番茄酱等等,但怎么要看顾客的使用就行;还有一家餐馆,老板不想让顾客知道我用的什么酱,我只告诉你你可以用调料酱。 
上面两个例子,前面那个餐馆就可以视为没有工厂,直接用new来“使用酱”;后边的餐馆,就有一个工厂屏蔽了顾客和餐馆,只有餐馆的人知道我给你的啥酱。(转自https://blog.csdn.net/qq_37487121/article/details/79985899)

    模式图:


    *:非静态的工厂方法:


    静态的工厂方法:

    

优点:

– Eliminates the need to bind application-specific classes to your code.

– Code deals only with the Product interface (Trace), so it can work withany user-defined ConcreteProduct (FileTrace, SystemTrace)

潜在的缺点:

– Clients may have to make a subclass of the Creator, just so they cancreate a certain ConcreteProduct.

– This would be acceptable if the client has to subclass the Creator anyway,but if not then the client has to deal with another point of evolution.

满足:OCP(Open-Closed Principle):—对扩展的开放,对修改已有代码的封闭

    2.抽象工厂模式(Abstract Factory)

    方法:提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体类。

    用途:例:①当一个UI,包含多个窗口控件,这些控件在不同的OS中实现不同。②当一个仓库类,要控制多个设备,这些设备的制造商各有不同,控制接口有差异

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值