原创

技术

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

此练习中我写的工厂是通过一个方法(买狗)来调用相应对象创建语句去创建不同的(狗)对象;用子对象中的重写方法验证父对象被赋值后调用的方法是属于谁的。

具体的解释在代码中已经标明:

import java.util.Scanner; //多态 public class Test2 { public static void main(String[] args) { Factory no1=new Factory();//创建工厂对象 no1.maigou();//调用工厂的方法(买狗) } } class Factory{ public void maigou(){ Dog1 dog=new Dog1(); System.out.println("要买什么狗?"); Scanner sc=new Scanner(System.in); String str=sc.nextLine(); switch(str){ default: System.out.println("没有这玩意儿"); break; case "金毛" : dog=new Jinmao(); dog.show(); break;//将子类赋值给父类并调用重写后的方法 case "二哈" : dog=new Erha(); dog.show();//将子类赋值给父类并调用重写后的方法 } } } class Dog1{ //这里因为Dog类在其他包里建过了,为了避免冲突,取名Dog1 public void show(){ System.out.println("这是一只狗"); } } class Erha extends Dog1{ public void show(){ System.out.println("这是一只二哈");//通过重写函数show验证dog对象调用的方法是谁的 } } class Jinmao extends Dog1{ public void show(){ System.out.println("这是一只金毛");//通过重写函数show验证dog对象调用的方法是谁的 } }