本文共 3316 字,大约阅读时间需要 11 分钟。
在软件设计中,抽象工厂模式是一个非常实用的设计模式。为了更好地理解这一点,我们可以通过一个具体的案例来分析。
package com.sise.工厂模式.抽象工程模式;public abstract class Snack { public String name; public double price; public Snack() {} public Snack(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Snack{" + "name='" + name + '\'' + ", price=" + price + '}'; }}
package com.sise.工厂模式.抽象工程模式;public class EatSnack extends Snack { public EatSnack() { super(); } public String toString() { return super.toString(); }}
package com.sise.工厂模式.抽象工程模式;public class DrinkSnack extends Snack { public DrinkSnack() { super(); } public String toString() { return super.toString(); }}
package com.sise.工厂模式.抽象工程模式;public class SpicyStrip extends Snack { public SpicyStrip() { super(); } public String toString() { return super.toString(); }}
package com.sise.工厂模式.抽象工程模式;public interface SnackFactory { public Snack createSnack();}
package com.sise.工厂模式.抽象工程模式;public class EatSnackFactory implements SnackFactory { @Override public EatSnack createSnack() { EatSnack es = new EatSnack(); es.setName("薯片"); es.setPrice(66.5); return es; }}
package com.sise.工厂模式.抽象工程模式;public class DrinkSnackFactory implements SnackFactory { @Override public DrinkSnack createSnack() { DrinkSnack ds = new DrinkSnack(); ds.setName("可乐"); ds.setPrice(166); return ds; }}
package com.sise.工厂模式.抽象工程模式;public class SpicyStripFactory implements SnackFactory { @Override public Snack createSnack() { SpicyStrip spicyStrip = new SpicyStrip(); spicyStrip.setName("辣条"); spicyStrip.setPrice(2.5); return spicyStrip; }}
package com.sise.工厂模式.抽象工程模式;public class test { public static void main(String[] args) { SnackFactory eatSnackFactory = new EatSnackFactory(); SnackFactory drinkFactory = new DrinkSnackFactory(); EatSnack es = (EatSnack) eatSnackFactory.createSnack(); System.out.println(es.toString()); DrinkSnack ds = (DrinkSnack) drinkFactory.createSnack(); System.out.println(ds.toString()); }}
抽象工厂模式作为一个常用的设计模式,具有其独特的优缺点。
通过上述案例,我们可以清晰地看到抽象工厂模式的核心工作原理。抽象工厂模式通过引入工厂接口和具体工厂实现类,实现了对象的创建过程的抽象化,使得系统的设计更加灵活和可扩展。然而,在实际应用中,需要根据具体需求权衡其优缺点,以做出最合适的设计选择。
转载地址:http://grve.baihongyu.com/