java 代码
- Class prodct{}//为产品实体,内容省略
- Interface People{
- Void product();
- Void consume();
- }
- //生产者
- Class Producer implement People{
- Private int amount=10;//默认一次生产10个产品
- Void product(Buffer buffer){
- product(this.amount,buffer);
- }
- //用户可以自行设置一次生产产品的数量
- Void product( int AutherAmount, Buffer buffer){
- for(var i=1;i<= AutherAmount;i++){
- createProduct(buffer);
- }
- }
- Void createProduct(Buffer buffer){
- //得到新产品,并向Buffer中投放
- buffer.P( );
- buffer.object[buffer.getFull]=new Product();
- buffer.V( );
- }
- }
- //消费者
- Class Consumer implement People{
- Private int amount=10;
- Public Product[] products;
- consume(Buffer buffer){
- consume(this.amount,buffer);
- }
- consume(int AutherAmount, Buffer buffer){
- for(var i=1;i<= AutherAmount;i++){
- getProduct(budder);
- }
- }
- Void getProduct(Buffer buffer){
- //Buffer中得到新产品
- buffer.V( );
- Producs[buffer.getEmpty]=buffer.object[buffer.getFull];
- buffer.P( );
- }
- }
- Interface PandV{
- Void P( );
- Void V( );
- }
- //缓冲区
- Class Buffer implement PandV{
- Public Object[] object=new object[];
- Private int full;
- Private int empty;
- Public Int getFull(){return this.full;}
- Public Int getEmpty(){return this.empty;}
- Void Buffer(){
- Buffer(10);//默认缓冲区大小为10
- }
- Void Buffer(int size){
- This.object.length=size;
- This.full=0;//full初始为0
- This.empty= size;//empty初始为buffer的大小
- }
- Viod P( ){
- If(full>0){full--;}
- }
- Viod V( ){
- If(empty<= object.length){ empty++; }
- }
- }
- Class done{
- Public static void main(String[] args){
- Public People people;
- Buffer bf=new Buffer();
- people=new Producer();
- people.produce(bf);
- people=new Consumer();
- people.consume(bf);
- }
- }