大话设计模式之_工厂模式

大话设计模式之_工厂模式

  • 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static factory method

  • 抽象工厂

什么是工厂呢?

工程模式是我们最常用的设计模式,在很多开源框架里头可以说工程模式是遍地开花呀,当然你如果你有兴趣写一个开源框架那么还得掌握:注解、反射机制,这个小笔笔会在后面跟大家分享吐槽。给大家附上:笔者曾经写的一个app的下拉刷新和加载更多的框架(由于涉及到公司的安全协议,这里给大家分享实现的思路和部分核心代码)

言归正传:工厂模式是我们最常用的实例化对象模式,通俗的说就是用工厂方法替代new操作一种设计模式

1.工厂方法

核心思想就只要记住一句话:有一个抽象的Factory类(可以是抽象类和接口)这个类不负责在具体的产品生产,而是制定一种规范,具体的生产由其子类去完成

ps:如果你理解上面这句话了,那么就说明你已经掌握了过程设计模式的精髓了,现在你已经成功了80%了,别担心,剩下的20%我给大家贴个demo就一目了然了


//1.定义接口

public interface People{

public void say();

}

//2.1接口的实现类

public void Chinese implements People{

public void say(){

system.out.printfln("中国话");

}

}

//2.2接口的实现类

public void Amercia implements People{

public void say(){

system.out.printfln("英语");

}

}

//3.工厂类,制定规范

public class People_Factory{

//方法的返回值,用到了多态

public static People create(int type){

if(type ==1){

return new Chinese();

}else if(type ==2){

return new Amercia();

}

}

}

//4.演示效果

public class TestFactory{

public static void main(String[]args){

People p = People_Factory.create(1);

p.say();

People p = People_Factory.create(2);

p.say();

}

}

2.抽象工厂

抽象工厂模式是工厂方法模式的升级版,它是用来创建一组相关或者相互依赖的对象。(又是很精辟的一句话,此处高能好好品味)

是不是有点难以理解?那就看下他们的区别对比下不同点,然后就知道抽象工厂是什么了。工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是对对个产品等级结构。

在编码中,通常一个产品结构为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或者抽象类的,而抽象工厂模式所提供的产品则是衍生自不同的接口或者抽象类。

在抽象工厂模式中,有一个产品族的概念(即位于不同产品等级结构中功能相关联的产品组成的家族)。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。

下面以生产汽车的例子讲述抽象工厂

2.0排量两车厢、2.3排量两车厢:属同一等级结构

2.0排量两车厢、2.0排量三车厢:属同一个产品族

ps:老规矩上代码,讲了一大通还是代码直观点


//1.1定义产品1接口

public IProduct1{

public void show();

}

//1.2定义产品2接口

public IProduct2{

public void show();

}

//2.1实现定义的接口

class Product1 implements IProduct1{

public void show(){

system.out.println("这是产品1");

}

}

//2.2实现定义的接口

class Product2 implements IProduct2{

public void show(){

system.out.println("这是产品2");

}

}

//3抽象工厂的接口

interface IFactory{

public IProduct1 createProduct1();

public IProduct2 createProduct2();

}

//4抽象工厂的实现类

class MyFactory implements IFactory{

public IProduct1 createProduct1(){

return new Product1();

}

public IProduct2 createProduct2(){

return new Product2();

}

}

//5如何使用

public class Client{

public static void main(String[]args){

IFactory factory = new MyFactory();

factory.createProduct1().show();

factory.createProduct1().show();

}

}

总结

如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过一个工厂类来创建不同类型的对象,而无需暴露对象创建的逻辑给客户端。在Python中,简单工厂模式可以通过一个工厂类来创建不同的产品对象。下面是一个简单的示例: ```python class Product: def operation(self): pass class ConcreteProductA(Product): def operation(self): print("Performing operation A.") class ConcreteProductB(Product): def operation(self): print("Performing operation B.") class SimpleFactory: @staticmethod def create_product(product_type): if product_type == "A": return ConcreteProductA() elif product_type == "B": return ConcreteProductB() else: raise ValueError("Invalid product type.") # 使用简单工厂创建产品对象 factory = SimpleFactory() product_a = factory.create_product("A") product_a.operation() product_b = factory.create_product("B") product_b.operation() ``` 在上述示例中,`Product` 是一个抽象产品类,`ConcreteProductA` 和 `ConcreteProductB` 是具体产品类。`SimpleFactory` 是工厂类,通过 `create_product` 方法根据不同的产品类型创建相应的产品对象。 通过简单工厂模式,客户端无需知道具体的产品类,只需要通过工厂类来创建产品对象。这样可以降低客户端与具体产品类的耦合度,并且当需要新增产品时,只需要修改工厂类即可。 希望这个简单的示例能帮助你理解简单工厂模式在Python中的应用。如果有任何进一步的问题,请随时提问!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值