1.工厂模式
有点类似于单例模式,就是工厂类去调取所需要的子类对象;要什么就生成什么。
package com.Example.chapter05;
/**
* @author Administrator
* @date : 2017年3月27日 下午12:21:39
* @function : 工厂类理解
*/
public class FactoryDesign {
public static void main(String[] args) {
Personk instance=null;
instance=new Factory().getInstacne("man");
instance.say();
}
}
class Factory{
public Personk instance=null;
public Personk getInstacne(String classname){
if(("man").equals(classname)){
this.instance=new man();
}else if(("woman").equals(classname)){
this.instance=new woman();
}
return this.instance;
}
}
class Personk{
public void say(){
}
}
class man extends Personk{
@Override
public void say() {
// TODO Auto-generated method stub
System.out.println("男人说话女人不要插嘴");
}
}
class woman extends Personk{
@Override
public void say() {
// TODO Auto-generated method stub
System.out.println("女人说话男人不要插嘴");
}
}
2.代理模式
联想生活中的代理,从球星————>经纪人,客户需要从经纪人拿球星的意见。
package com.Example.chapter05;
/**
* @author Administrator
* @date : 2017年3月27日 下午4:32:55
* @function : 代理模式
*/
public class ProxyPattern {
public static void main(String[] args) {
Agent agent=new Agent();
agent.getStart(new Star());
agent.show();
}
}
interface Perform{
public abstract void show();
}
class Star implements Perform{
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("--------------明星答应签合同---------------");
}
}
class Agent implements Perform{
private Star star=null;
public void getStart(Star star){
this.star=star;
}
public void check(){
System.out.println("--------------正在验证球星意见-----------------");
}
@Override
public void show() {
// TODO Auto-generated method stub
this.check();
this.star.show();
}
}
3.适配器模式
(接口需要承接的类全部覆写抽象方法,则抽象类也需要实现全部的抽象方法!我觉得是废话!)主要思想:抽象类作为过渡去承接接口,去覆写需要的方法体;
package com.Example.test;
/**
* @author Administrator
* @date : 2017年3月27日 下午6:32:33
* @function : 验证接口需要覆写全部抽象方法,则抽象类也需要
*/
public class InterfaceOrExtends {
}
interface InnerDemo{
public abstract void say();
public abstract void wanna();
}
abstract class AbstractDemo implements InnerDemo{
public void say(){};
}
class Admit extends AbstractDemo{
@Override
public void wanna() {
// TODO Auto-generated method stub
}
}