1. 简单工厂模式
简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。
我的理解:简单工厂模式只是把类实例化的方法【new()】放在了工厂类中
example:定义一个简单汽车工厂,根据客户的不同需要,生产不同的汽车。
来吧
1.定义一个汽车的接口,有一个基本的行为方法:即车是可以开的居然
public interface ICar { //car 的行为 void driver(); }
2. 定义一个简单工厂,注意哟,这是重点。根据客户的不同需要,生产不同的汽车
public class SimpleFactory { //创建汽车的方法 public ICar createVehicle(String type){ ICar car = null; if("BMW".equals(type)){ car = new BMWCar(); }else if("QQ".equals(type)){ car = new QQCar(); } return car; } }
3. 定义一个宝马车
/** * 宝马车 * */ public class BMWCar implements ICar { public void driver() { System.out.println("宝马车在开啊。。。。"); } }
4. 定义一个奇瑞QQ专门为屌丝服务
/** * 奇瑞QQ * */ public class QQCar implements ICar{ public void driver() { System.out.println("QQ车在开啊。。。。"); } }
5. 都准备好了,再来一个专卖店吧,专门倾听客户声音为客户服务
/** * 售车店 * */ public class CarStore { private SimpleFactory factory;//这也是重点啊。 public CarStore(SimpleFactory factory) { this.factory = factory; } //我需要一辆车 public ICar orderVehicle(String type){ return factory.createVehicle(type); } }
6.运行看看
public class Main { public static void main(String[] args) { //定义一个工厂方法 SimpleFactory factory = new SimpleFactory(); //定义一个商店 CarStore carStore = new CarStore(factory); //来一辆宝马吧 ICar bmw = carStore.orderVehicle("BMW"); bmw.driver(); //我没钱来一辆QQ吧 ICar qq = carStore.orderVehicle("QQ"); qq.driver(); } }
以上是我理解的最简单工厂模式。
所有工厂模式都是用来封装对象的创建。
2. 抽象工厂模式
抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。
看例子吧
1. 抽象工厂方法
/** * 抽象工厂的方法 */ public abstract class AbstractFactory { //生产Vehicle的方法 abstract ICar createVehicle(String type); //生产airplane的方法 abstract IAirplane createAirplane(String type); }
2. 定义一个车的接口
/** * 汽车接口 */ public interface ICar { public void driver(); }3.定义一辆宝马车
public class BMWCar implements ICar{ @Override public void driver() { System.out.println("宝马车在开啊。。。。"); } }4.定义一个QQ
/** * 奇瑞QQ */ public class QQCar implements ICar{ @Override public void driver() { System.out.println("QQ在开。"); } }5.定义一个飞机的接口
/** * 飞机接口 */ public interface IAirplane{ public void fly(); }6. 定义一架空军一号
/** * 空军一号 */ public class AirForceOne implements IAirplane{ @Override public void fly() { System.out.println("灰太狼的空军一号。。。"); } }7. 定义一个747
/** * 747 */ public class Airbus747 implements IAirplane{ @Override public void fly() { System.out.println("747在飞啊。"); } }8.定义一个低级工厂,继承自抽象工厂,可以生产QQ和747
/** * 低级工厂 */ public class LowLevelFactory extends AbstractFactory{ //只能生产QQ ICar createVehicle() { return new QQCar(); } //只能生产747 IAirplane createAirplane() { return new Airbus747(); } }
9.定义一个高级工厂,继承自抽象工厂,可以生产bm和空车一号
/** * 高级工厂 */ public class HighLevelFactory extends AbstractFactory{ //可以生产bm ICar createVehicle() { return new BMWCar(); } //可以生产空军一号 IAirplane createAirplane() { return new AirForceOne(); } }
10.运行一下
public class Main { public static void main(String[] args) { //高级工厂 AbstractFactory hignFactory = new HighLevelFactory(); ICar bmw = hignFactory.createVehicle(); bmw.driver(); IAirplane airplane747 = hignFactory.createAirplane(); airplane747.fly(); //低级工厂 AbstractFactory lowFactory = new LowLevelFactory(); ICar qq = lowFactory.createVehicle(); qq.driver(); IAirplane airone = lowFactory.createAirplane(); airone.fly(); } }
我的理解:抽象工厂模式应该是有一个抽象工厂类,并且有许多继承的子工厂类。每一个类产品比方说,车,飞机,都有一个公共的接口。不同的子工厂可以组合生产不同的产品。
相关推荐
Python 114.设计模式_工厂模式实现.mp4
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
C#设计模式 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 4.单例模式 5.建造者模式 6.原型模式 7.适配器模式 8.装饰器模式 9.代理模式 10.外观模式 11.桥接模式
设计模式 c# 工厂方法模式
1.可以确信你从工厂得到的产品彼此是兼容的 2.可以避免具体产品和客户端代码之间的紧密耦合 3.符合单一职责原则 4.符合开闭原则
设计模式之禅之 工厂方法模式+策略模式 设计模式之禅之 工厂方法模式+策略模式
设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
设计模式-工厂模式 学习练习的代码 1.简单工厂模式 2.方法工厂模式 3.抽象工厂模式 4.模拟Spring Bean工厂练习
1.当你不知道改使用对象的确切类型的时候 2.当你希望为库或框架提供扩展其内部组件的方法时 1.将具体产品和创建者解耦 2.符合单一职责原则 3.符合开闭原则
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
设计模式 java 工厂系列
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
设计模式之工厂方法、简单工厂、抽象工厂
IOS 设计模式抽象工厂实例Demo IOS 设计 模式 抽象 工厂
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
28.设计模式之工厂模式 29.设计模式之装饰者模式 30.设计模式之外观模式 31.设计模式之代理模式 32.设计模式之观察者模式 33.设计模式之策略模式 34.设计模式之命令模式 35.设计模式之迭代器模式 36.设计模式之中介...