package cn.itcast.结构型模式.抽象工厂; // 抽象工厂 是针对产品族的,不是针对 产品登机 // 产品族:同一产地或同一厂商,功能不同 // 抽象苹果 abstract class AbstractApple{ public abstract void showName(); } // 中国苹果 class ChinaApple extends AbstractApple{ @Override public void showName() { System.out.println("中国苹果"); } } // 美国苹果 class USAApple extends AbstractApple{ @Override public void showName() { System.out.println("美国苹果"); } } // 抽象鸭梨 abstract class AbstractPear{ public abstract void showName(); } // 中国 鸭梨 class ChinaPear extends AbstractPear{ @Override public void showName() { System.out.println("中国鸭梨"); } } // 美国鸭梨 class USAPear extends AbstractPear{ @Override public void showName() { System.out.println("美国鸭梨"); } } // 抽象香蕉 abstract class AbstractBanana { public abstract void showName(); } // 中国香蕉 class ChinaBanana extends AbstractBanana{ @Override public void showName() { System.out.println("中国香蕉"); } } // 美国香蕉 class USABanana extends AbstractBanana{ @Override public void showName() { System.out.println("美国香蕉"); } } // 抽象工厂 针对产品族 abstract class AbstractFactory{ // 创建苹果 public abstract AbstractApple createApple(); // 创建鸭梨 public abstract AbstractPear createPear(); // 创建香蕉 public abstract AbstractBanana createBanana(); } // 中国工厂 class ChinaFactory extends AbstractFactory{ @Override public AbstractApple createApple() { return new ChinaApple(); } @Override public AbstractPear createPear() { return new ChinaPear(); } @Override public AbstractBanana createBanana() { return new ChinaBanana(); } } // 美国工厂 class USAFactory extends AbstractFactory{ @Override public AbstractApple createApple() { return new USAApple(); } @Override public AbstractPear createPear() { return new USAPear(); } @Override public AbstractBanana createBanana() { return new USABanana(); } } public class FactoryTest { public static void main(String[] args) { // 创建 中国工厂 AbstractFactory factory=new ChinaFactory(); // 生产中国苹果 AbstractApple apple = factory.createApple(); apple.showName(); // 生产中国鸭梨 AbstractPear pear = factory.createPear(); pear.showName(); //生产中国香蕉 AbstractBanana banana = factory.createBanana(); banana.showName(); } }
抽象工厂(java)
最新推荐文章于 2024-04-21 10:17:44 发布