打卡24天

开闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改现有代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则
为什么使用开闭原则?
第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则
第二:开闭原则是最基础的设计原则,其他的五个设计原则都是开闭原则的具体形态,也就是说其他的五个设计原则是指导设计的工具和方法,而开闭原则才是其精神领袖
第三:开闭原则可以提高复用性
在面向对象的设计中,所有的逻辑都是从原则逻辑组合而来,不是在一个类中独立实现一个业务逻辑。只有这样的代码才可以复用,粒度越小,被复用的可能性越大。他可以减少代码的重复,避免相同的逻辑分散在多个角落。减少维护人员的工作量,缩小逻辑粒度,直到一个逻辑不可以分为止,这样才能提高复用率
第四:开闭原则可以提高维护性
第五:面向对象开发的要求
万物皆对象,我们要把所有的事物抽象成对象,然后针对对象进行操作,但是万物皆发展变化,有变化就要有策略去应付
如何使用开闭原则
第一: 抽象约束
抽象是对一组事物的通用描述
第二:元数据【metadata】控件模块行为
第三:制定项目章程
第四:封装变化
对变化封装包含两层含义:
1.将相同的变化封装到一个接口或抽象类中
2.将不同的变化封装到不同的接口或抽象类中,不应该有两个不同的变化出现在同一个接口或抽象类中。
封装变化,也就是受保护的变化,找出预计有变化或不稳定的点,我们为这些变化点创建稳定的接口
工厂模式:(特效,读表,怪物)
概念:这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
主要解决:接口选择的问题
何时使用:我们明确地计划不同条件下创建不同实例时
如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品
关键代码:创建过程在其子类执行
优点:
1.一个调用者想创建一个对象,只要知道其名称就可以了
2.扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
3.屏蔽产品的具体实现,调用者只关心产品的接口
缺点:
每次增加一个产品时,都需要一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事!
注意事项:
作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。
单例模式:
这种类型属于创建型模式,这种模式设计到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问位移的对象的方式,可以直接访问,不需要实例化该类的对象
注意:
1.单例类只能有一个实例
2.单例类必须自己创建自己的唯一实例
3.单例类必须给所有其他对象提供这一实例
意图:保证一个类只有一个实例,并提供一个访问它的全局访问点
主要解决:一个全局使用的类频繁的创建与销毁
何时使用:当你想控制实例数目,节省系统资源的时候
如何解决:判断系统是否已经有这个
优点:
1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例
2.避免对资源的多重占用
缺点:
没有接口不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值