设计模式之工厂模式

议论:

      除了直接new对象以外有什么好的创建对象方法吗?

      如果有许多类有统一的接口,我们如果想要使用这些类创建一些对象,除了直接new还可以怎么办呢?

     我们可以根据不同的参数创建不同的对象:

如:if(a){创建a1,}if(b){创建a2}......

    但是思考如果这段代码加在接口中,那么如果有新的子类就要更改这部分if......,违反了对扩展开放对修改关闭的原则。

1 简单工厂模式

              将创建对象的代码(变化的部分),抽象出来成为一个类A,其他用户在创建对象或者对象族的时候,需要在自己类内构造一个A.

 

简单工厂模式用一个类实现对象创建方法的封装,然后使用者只需在自己的构造函数中或者类中添加对其引用即可。

 

2、工厂模式:定义了一个创建对象的接口,但由子类决定要实例化的是哪一个类。工厂方法让类把实例化推迟到子类中。(工厂模式主要是封装了对象的创建,工厂方法在接口中声明,返回值为对象类型接口,必须为抽象类型以便要求子类实现)

               abstract  Product  factorymethod(String type);(工厂接口中的工厂方法)

理解:可以理为声明了一个工厂接口,里面包含一个生产对象的抽象方法,那么每一个子类都有自己的实现,也就是自己生产对象的方法,因此每一个子类都可以理解为是一个简单工厂,这样类的实现和创建完全解耦,类实现的改变不会影响类的创建。

转载于:https://www.cnblogs.com/abstract-fabulous/p/7212544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值