例子,pizza的生产模式
1.平行的类层级,如Pizza类和PizzaStorte这两个抽象类,他们的子类都有特定的实现。所谓实现一个借口,指的是实现超类型的(类或接口)中的一个方法。在PizzaStore中有create和order两个方法,这两个方法将由子类决定的可变部分(create部分,在父类pizzastore中是抽象的,在派生类中实现,如在NYpizzastore中实现)和公共部分的不变部分相分离(即每个pizza的烘烤,切片等手续),create中的对象的创建推迟到子类中去,至于交给PizzaStore的哪一个子类,由顾客决定。
2.工厂模式就是让子类决定该创建的对象是什么,选择了哪个子类,也就决定了创建的产品是哪个。顾客开始叫餐,首先先选择一个具体的pizzastore,如NYpizzastore(即一个继承自pizzastore的一个派生类,这个由用户决定),实例化,然后调用order(type),order调用create(这个create方法是由子类实现的,比如选择返回NYpizzastore里的哪个pizza,这个pizza则是Pizza的子类),使用Type参数,生成pizza类型,最后执行公共部分,当然公共部分也允许变化,只要在PizzaStore的子类中对cut.box等方法进行覆盖即可。
3.抽象工厂模式则是利用组合,创建相关依赖家族。
很重要的多态体现,
PizzaStore nystore=new NYPizzaStore();
Pizza pizza=createPizza(string type);//此时返回的pizza是Pizza类的子类的一个实例
1.平行的类层级,如Pizza类和PizzaStorte这两个抽象类,他们的子类都有特定的实现。所谓实现一个借口,指的是实现超类型的(类或接口)中的一个方法。在PizzaStore中有create和order两个方法,这两个方法将由子类决定的可变部分(create部分,在父类pizzastore中是抽象的,在派生类中实现,如在NYpizzastore中实现)和公共部分的不变部分相分离(即每个pizza的烘烤,切片等手续),create中的对象的创建推迟到子类中去,至于交给PizzaStore的哪一个子类,由顾客决定。
2.工厂模式就是让子类决定该创建的对象是什么,选择了哪个子类,也就决定了创建的产品是哪个。顾客开始叫餐,首先先选择一个具体的pizzastore,如NYpizzastore(即一个继承自pizzastore的一个派生类,这个由用户决定),实例化,然后调用order(type),order调用create(这个create方法是由子类实现的,比如选择返回NYpizzastore里的哪个pizza,这个pizza则是Pizza的子类),使用Type参数,生成pizza类型,最后执行公共部分,当然公共部分也允许变化,只要在PizzaStore的子类中对cut.box等方法进行覆盖即可。
3.抽象工厂模式则是利用组合,创建相关依赖家族。
很重要的多态体现,
PizzaStore nystore=new NYPizzaStore();
Pizza pizza=createPizza(string type);//此时返回的pizza是Pizza类的子类的一个实例