데이터 베이스 MySQL 튜토리얼 乱学设计模式代理模式

乱学设计模式代理模式

Jun 07, 2016 pm 04:41 PM
하나 연기 모델 디자인 패턴

在乱学装饰模式的时候给出了一篇参考文章,是对比装饰模式和代理模式的。自然,这就是OneCoder现在需要理解的问题。先复习一下设计模式6大原则:设计模式的六大原则(引自:http://zz563143188.iteye.com/blog/1847029) 1、开闭原则(Open Close Principle

在乱学装饰模式的时候给出了一篇参考文章,是对比装饰模式和代理模式的。自然,这就是OneCoder现在需要理解的问题。 先复习一下设计模式6大原则: 设计模式的六大原则(引自:http://zz563143188.iteye.com/blog/1847029)
1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Principle) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科 3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle) 这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。 5、迪米特法则(最少知道原则)(Demeter Principle) 为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。 6、合成复用原则(Composite Reuse Principle) 原则是尽量使用合成/聚合的方式,而不是使用继承。
代理模式:为其他对象提供一种代理以控制对这个对象的访问。 还是来个图表示一下: 这里设想了一个简单的卖房子的场景。在没有代理的情况下,房子的拥有者想要卖房子,需要自己发布信息,带买家看房,办理交接手续等事情。这时候房主发现这样太麻烦了。于是他请来了代理HouseProxy,代理负责除必须房主参加的办理手续之外的所有事情。 这正是代理模式应用场景中的:智能指引,指当调用真实的对象时,代理处理另外的一些事情。 对比装饰模式,感觉非常相近,所以才会有之前一直提到的文章。代理模式感觉是一个代理处理了所有其他的事情,装饰模式是需要一系列各种各种的“能人”,各取所长。 实现代码很简单了:
/**
* Created by OneCoder on 2014/11/24.
*/
public class HouseOwner implements ISellHouse {
    @Override
    public void sellHouse() {
        System.out.println("Sell my house.") ;
    }
}
/**
* Created by OneCoder on 2014/11/24.
*/
public class HouseProxy implements ISellHouse {
    private ISellHouse seller;
    public HouseProxy(ISellHouse seller) {
        this.seller = seller ;
    }
    @Override
    public void sellHouse() {
        System.out.println("Proxy: Publish the information.");
        System. out.println("Proxy: Contact the buyer.");
        seller.sellHouse();
        System. out.println("Proxy: Get commision.");
    }
}
로그인 후 복사
似乎没什么可说的,OneCoder自我感觉是可以区分和使用这两种设计模式了,目的达到了。 PS: 1、最近博客更新的比较慢,家里的事情比较多,不过学习是一定要坚持的,哪怕是龟兔赛跑,我也在前进。 2、博客最近流量超标(15G/月),原因是遭到来自IP:114.215.138.184(爱论文网?)的不间断爬取。精力有限,经济有限(已经又充了流量。),所以,OneCoder准备慢慢把博客完全搬家到github.io上,这个过程也许很漫长。。。 爬虫可以。。。没完没了的爬。。就不必了吧。。。。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java 프레임워크의 디자인 패턴과 아키텍처 패턴의 차이점 Java 프레임워크의 디자인 패턴과 아키텍처 패턴의 차이점 Jun 02, 2024 pm 12:59 PM

Java 프레임워크의 디자인 패턴과 아키텍처 패턴의 차이점

Java 디자인 패턴에서 어댑터 패턴의 놀라운 사용 Java 디자인 패턴에서 어댑터 패턴의 놀라운 사용 May 09, 2024 pm 12:54 PM

Java 디자인 패턴에서 어댑터 패턴의 놀라운 사용

Java 디자인 패턴의 데코레이터 패턴 분석 Java 디자인 패턴의 데코레이터 패턴 분석 May 09, 2024 pm 03:12 PM

Java 디자인 패턴의 데코레이터 패턴 분석

PHP 디자인 패턴 실제 사례 분석 PHP 디자인 패턴 실제 사례 분석 May 08, 2024 am 08:09 AM

PHP 디자인 패턴 실제 사례 분석

Java 프레임워크에서 디자인 패턴을 사용할 때의 장점과 단점은 무엇입니까? Java 프레임워크에서 디자인 패턴을 사용할 때의 장점과 단점은 무엇입니까? Jun 01, 2024 pm 02:13 PM

Java 프레임워크에서 디자인 패턴을 사용할 때의 장점과 단점은 무엇입니까?

디자인 패턴이 코드 유지 관리 문제를 처리하는 방법 디자인 패턴이 코드 유지 관리 문제를 처리하는 방법 May 09, 2024 pm 12:45 PM

디자인 패턴이 코드 유지 관리 문제를 처리하는 방법

Guice 프레임워크에 디자인 패턴 적용 Guice 프레임워크에 디자인 패턴 적용 Jun 02, 2024 pm 10:49 PM

Guice 프레임워크에 디자인 패턴 적용

PHP 디자인 패턴: 실제 테스트 중심 개발 PHP 디자인 패턴: 실제 테스트 중심 개발 Jun 03, 2024 pm 02:14 PM

PHP 디자인 패턴: 실제 테스트 중심 개발

See all articles