了解设计模式吗?请至少写出4种名字。找其中一种用代码实现。并说出其优缺点。
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
工厂方法模式:
优点:
在简单工厂中主函数或者客户端不再负责对象的创建,而是把这个责任交给工厂类,主函数或者客户端在使用对象的时候只从工厂中调用就行了,从而明确了各个类的职责,符合单一职责原则)
缺点
由于这个工厂类负责所有对象的创建,那么当子类增多时,我们就需要去修改工厂类的代码,这样呢,就违反了一个原则:开闭原则
抽象工厂模式:
优点:
解决了简单工厂模式的违反开闭原则
缺点
如果需要增加一个具体产品类角色,需要添加这个类和对应的工厂类。代码量大。
单例模式:
优点:
在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。它可以保证我们不会重复创建,而是始终指向同一个对象,因此可以节约系统资源和保持全局状态。
缺点:
不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。因此单例类的扩展有很大的困难
单例类的职责过重,在一定程度上违背了“单一职责原则”。
可能会被垃圾回收机制当做垃圾回收。