package com.model.AbstractFactory; /* * 具体Scroll实现类 */ public class MotifScroll extends Scroll { /* * 构造方法 */ public MotifScroll(){ super(); this.setLookAndFeel("Motif"); } } 代码 7 ComponentFactory.java: package com.model.AbstractFactory; /* * 抽象工厂的抽象类 */ public abstract class ComponentFactory { /** * 生产一种具体的Button产品 * @return Button对象 */ public abstract Button createButton(); /* * 生产一种具体的Scroll产品 */ public abstract Scroll createScroll(); } 代码 8 WindowsComponentFactory.java: package com.model.AbstractFactory; /* * 具体工厂 */ public class WindowsComponentFactory extends ComponentFactory { /** * 生产特定系列产品 */ @Override public Button createButton() { return new WindowsButton(); } /** * 生产特定系列产品 */ @Override public Scroll createScroll() { return new WindowsScroll(); } } 代码 9 MotifComponentFacotry.java: package com.model.AbstractFactory; /* * 具体工厂 */ public class MotifComponentFactory extends ComponentFactory { /** * 生产特定系列产品 */ @Override public Button createButton() { // TODO Auto-generated method stub return new MotifButton(); } /** * 生产特定系列产品 */ @Override public Scroll createScroll() { // TODO Auto-generated method stub return new MotifScroll(); } } 代码 10 Client.java: package com.model.AbstractFactory; /** * 客户端代码 * @author Administrator * */ public class Client { public static void main(String[] args) { /** * 创建变量 */ ComponentFactory factory; Button button; Scroll scroll; /** * 生产Windows风格控件 */ factory = new WindowsComponentFactory(); //下面就可以生产特定的产品了 button = factory.createButton(); scroll = factory.createScroll(); //显示控件 button.show(); button.show(); /** * 生产Motif风格控件 */ factory = new MotifComponentFactory(); //下面就可以生产特定的产品了 button = factory.createButton(); scroll = factory.createScroll(); //显示控件 button.show(); scroll.show(); } } |