[PHP] PHP interface > Web/PHP/API

본문 바로가기
사이트 내 전체검색

Web/PHP/API

[PHP] PHP interface

페이지 정보

작성자 sbLAB 댓글 0건 조회 326회 작성일 23-01-02 15:36

본문


   
<?php

    declare(strict_types=1);

    //모니터 제조스펙 인터페이스
    interface IMonitorMaker
    {
        public function makeProduct();
    }


    //모니터 제조스펙 데이타모델
    class MonitorModel
    {
        public string $name;
        public int $size;

        function __construct($name, $size)
        {
            $this->name = $name;
            $this->size = $size;
        }

    }

    //삼성모니터 주문제품스펙
    class SamsungMonitor implements IMonitorMaker
    {  
    public function makeProduct()
        {
            return new MonitorModel("SAMSUMG-Samtron", 24);
        }
    }

    //LG모니터 주문제품스펙
    class LgMonitor implements IMonitorMaker
    {
    //override  
    public function makeProduct()
        {
            return new MonitorModel("LG-Ultra", 32);
        }
    }


    //쇼핑몰주문사이트
    class ShoppingSite
    {
        //IMonitorMaker monitorMaker 받을 준비
        public function orderMonitor(IMonitorMaker $monitorMaker)
        {
            return $monitorMaker->makeProduct();
        }
    }

    $shoppingSite = new ShoppingSite();
   
    $myMonitorModel = $shoppingSite->orderMonitor(new SamsungMonitor());  
    print($myMonitorModel->name."---".$myMonitorModel->size);

    print("\n");

    $myMonitorModel = $shoppingSite->orderMonitor(new LgMonitor());
    print($myMonitorModel->name."---".$myMonitorModel->size);  

 


SAMSUMG-Samtron---24

LG-Ultra---32


[etc]


[같은 내용에 getter / setter 적용]
    <?php

        declare(strict_types=1);

        //모니터 제조스펙 인터페이스
        interface IMonitorMaker
        {
            public function makeProduct();
        }


        //모니터 제조스펙 데이타모델
        class MonitorModel
        {
            private string $name;
          private int $size;

          public function getName()
          {
                  return $this->name;
          }

          public function getSize()
          {
                    return $this->size;
          }

            function __construct($name, $size)
            {
                $this->name = $name;
                $this->size = $size;
            }
           

        }

        //삼성모니터 주문제품스펙
        class SamsungMonitor implements IMonitorMaker
        {  
        public function makeProduct()
            {
                return new MonitorModel("SAMSUMG-Samtron", 24);
            }
        }

        //LG모니터 주문제품스펙
        class LgMonitor implements IMonitorMaker
        {
        //override  
        public function makeProduct()
            {
                return new MonitorModel("LG-Ultra", 32);
            }
        }


        //쇼핑몰주문사이트
        class ShoppingSite
        {
            //IMonitorMaker monitorMaker 받을 준비
            public function orderMonitor(IMonitorMaker $monitorMaker)
            {
                return $monitorMaker->makeProduct();
            }

        }

        $shoppingSite = new ShoppingSite();
       
        $myMonitorModel = $shoppingSite->orderMonitor(new SamsungMonitor());  
        print($myMonitorModel->getName()."---".$myMonitorModel->getSize());

        print("\n");

        $myMonitorModel = $shoppingSite->orderMonitor(new LgMonitor());
        print($myMonitorModel->getName()."---".$myMonitorModel->getSize());  

 

SAMSUMG-Samtron---24 LG-Ultra---32  

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
281
어제
459
최대
576
전체
87,454

그누보드5
Copyright © sebom.com All rights reserved.