设计模式-工厂模式/抽象工厂模式

工厂模式的应用场景和实现代码
适用场景:用来向使用者屏蔽创建对象的细节

如果不用工厂模式,就要亲自关注如何创建对象,造成创建对象的代码和使用对象的代码耦合度很高,不易后续修改和测试。

实现代码:

一个业务父类,N个业务子类
一个工厂接口
N个工厂接口实现类-具体的工厂
通过具体的工厂创建业务子类实例

class Book {
        public Book(){ }
    }

    public class JavaBook extends Book {
        public JavaBook(){}
    }
    public class DBBook extends Book {
        public DBBook(){}
    }

    interface BookFactory{
        Book createBook();
    }
    public class JavaBookFactory implements BookFactory{
        public JavaBook createBook(){
            return new JavaBook();
        }
    }
    public class DBBookFactory implements BookFactory{
        public DBBook createBook(){
            return new DBBook();
        }
    }

    //使用对象的地方
    BookFactory javaFactory = new JavaBookFactory ();
    Book javaBook = javaFactory.createBook();
    BookFactory dbFactory = new DBBookFactory ();
    Book dbBook = dbFactory.createBook();

在使用工厂模式设计代码结构时,应遵循开闭原则。

开闭原则( OCP ) 与设计模式无关,它是一种设计架构的原则,核心思想是,系统(或模块或万法) 应当对扩展开放,对修改关闭(也就是不会影响到原有的实现)。

抽象工厂模式的应用场景和实现代码

和工厂模式的区别:
与工厂模式相比 ,抽象工厂模式的顶层类一般是抽象类(也就是抽象工厂模式名称的来源),但与工厂模式相比 ,没有优劣之分 , 只看哪种模式更能适应需求 。 例如,如果要在同一类产品(如书 ) 中生严多个子产品 (如文稿和视频) ,那么就可以使用抽象工厂模式;而如果需要生产的产且中只有主部件 (如文稿),而不需要附属产品(如视频),那么就可以用工厂模式 。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值