设计模式--依然创建者
读HeadFirst的工厂有一下几条小感悟,这几条是我之前看书时记录下来的,这次又复习了下。其实创建类型的模式的主要作用在于集中创建对象,用时调用所需,以及在相似类型的对象创建的便捷性提供了帮助。
其实简单工厂不是设计模式,更像是一种编程习惯!
store为了将pizza分成双倍芝士或者全素型比萨
orderPizza只是将抽象的pizza进行操作,比如准备,烧烤,切片,装盒操作,与具体的pizza类完全解耦
做哪种比萨是由具体的比萨店来决定的(纽约比萨店还是芝加哥比萨店)
工厂方法
abstract Product factoryMethod(String type)
1.工厂方法为抽象的,所以依赖子类来处理对象的创建
2.必须返回一个产品!
3.工厂方法将客户和时机创建产品的代码分离!
工厂方法的元素:
创建者(Creator):PizzaStore,NYPizzaStore,ChicagoPizzaStore
不需要知道在制造那个具体产品!
能够产生产品的类为具体创造者(createPizza)
产品类(Product):Pizza,NYStyleCheesePizza,NYStyleVeggiePizza
,ChincagoStyleVeggiePizza,ChincagoStyleCheesePizza
实际制造!
能够产生产品的类为具体创造者(createPizza)
工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。
工厂方法让类把实例化推迟到子类
当你直接实例化一个对象时,就是依赖它的具体类,不使用工厂模式,将大大依赖具体类!导致耦合度极大!
设计原则:要依赖抽象,不要依赖具体类!【依赖倒置原则】
依赖倒置知道方针:变量不可以持有具体类的引用:工厂避免这样的做法!
不要让类派生自具体类(派生自一个抽象)
不要覆盖基类已经实现的方法!
抽象工厂:提供一个借口,用于创建相关或依赖对象的家族,而不需要指定具体类!
抽象工厂允许客户使用抽象的接口来创建相关产品,保证客户从具体的产品中解耦
【原料工厂就如同这个一样!】
客户端只需要知道一个抽象工厂,一个抽象产品 ,实际上是使用具体工厂实现具体产品(NYPizzaStore)
,同时这个具体产品是继承自抽象产品的!
抽象工厂与工厂:都是通过子类来创建对象!客户只需要知道所使用的抽象类即可!

浙公网安备 33010602011771号