码迷,mamicode.com
首页 > 其他好文 > 详细

[设计模式]3.1简单工厂模式

时间:2021-05-24 14:17:47      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:img   模式   null   range   arm   父类   mic   product   welcome   

一、卖票案例

//测试
public class CilentTest {
	public static void main(String arg[]){
		Customer p1=new Children();
		System.out.println(p1.calculate(100.00));		
		Customer p3=new Vip();
		System.out.println(p3.calculate(100.00));
	}
}
//
interface Customer {
	public double calculate(double price);
}
//vip票
class Vip implements Customer {
    private String name="VIP";
    private double jifeng=0;
    
	public double calculate(double price){	
		jifeng=jifeng+0.1*price;	
		System.out.println("Welcome VIP,Now your jifen is "+jifeng);	
		System.out.print(name+"‘s price is ");	
		return 0.8*price;
	}	
}
//儿童票
class Children implements Customer{
	private String name="children";
	public double calculate(double price){	
		System.out.print(name+"‘s price is ");
		return 0.5*price;
	}
}
//学生票
class Student implements Customer{
	private String name="student";	
	public double calculate(double price){		
		System.out.print(name+"‘s price is ");		
		return 0.8*price;
	}
}

二、简单工厂模式

1、工厂模式的定义

定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。在简单工厂模式中创建实例的方法通常为静态方法,因此简单工厂模式又叫作静态工厂方法模式

2、简单工厂模式的主要角色

  • 简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
  • 抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。
  • 具体产品(ConcreteProduct):是简单工厂模式的创建目标。

技术图片

3、该模式的代码

//测试
public class CilentTest {
    public static  void  main(String[] args){
        Fruit fruit=FruitFarm.getFruit("apple");
        fruit.eat();

        Fruit fruit1=FruitFarm.getFruit("orange");
        fruit1.eat();
    }
}
//抽象产品
interface Fruit {
    public void eat();
}
//具体产品1:Apple
class Apple implements Fruit{
    @Override
    public void eat(){
        System.out.println("eat Apple!");
    }
}
//具体产品2:Orange
class Orange implements Fruit{
    @Override
    public void eat() {
        System.out.println("eat Orange!");
    }
}
//SimpleFactory工厂
class FruitFarm {
    public static Fruit getFruit(String args){
        if(args.equalsIgnoreCase("apple")){
            return new Apple();
        }else if(args.equalsIgnoreCase("orange")){
            return new Orange();
        }else{
            return null;
        }
    }
}

[设计模式]3.1简单工厂模式

标签:img   模式   null   range   arm   父类   mic   product   welcome   

原文地址:https://www.cnblogs.com/52yu/p/14779195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!