Java核心之设计原则和设计模式
使用基于tcp协议的编程模型实现将Message类型对象由客户端发送给服务器:
服务器接收到对象后判断用户对象信息是否为"admin"和"123456",若是则将Message对象中的类型改为"sucess",否则将类型改为"failed"并回发给客户端.
客户端接收到服务器发来的对象后判断并给出提示。
其中Message类的特征有:类型(字符串类型) 和 用户对象(User类型)。
其中User类的特征有:用户名、密码(字符串类型)。
1 | import java.io.ObjectInputStream; |
1 | import java.io.ObjectInputStream; |
软件开发的流程
需求分析文档 => 概要设计文档 => 详细设计文档 => 编码和测试 => 安装和调试=> 维护和升级
常用的设计原则
-
开闭原则
对扩展开放,对修改关闭。
1
2
3
4
5
6
7public class Person {
private String name;
... ...
}
public class SubPerson extends Person {
private int age;
} -
里氏代换原则
任何父类可以出现的地方,子类一定可以出现。
子类is a父类,建议多使用多态。
1
2
3
4
5public static void printShape(Shape s) {
s.show();
}
printShape(new Rect(1, 2, 3, 4));
printShape(new Circle(5, 6, 7)); -
依赖倒转原则
尽量多依赖于抽象类和接口而不是具体实现类。抽象类对子类具有强制性和规范性。
1
2
3
4
5
6
7public abstract class Account {
public abstract double getLixi();
}
public class FixedAccount extends Account {
public double getLixi() { }
} -
接口隔离原则
尽量多依赖于小接口而不是大接口,避免接口的污染。
1
2
3
4
5
6
7
8
9
10public interface RunAnimal {
public abstract void run();
}
public interface FlyAnimal {
public abstract void fly();
}
public class Dog implements RunAnimal {
public void run() {}
} -
迪米特法则(最少知道原则)
一个实体(模块)应当少于其它实体之间发生关联。
高内聚,低耦合
所谓高内聚就是指一个实体应该有的功能应当尽量高度聚集于该实体的内部。
所谓低耦合就是指一个实体应当减少与其它实体之间的关联度。
-
合成复用原则
尽量多使用合成的方式,而不是继承的方式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class A {
public void show() { ... }
}
public class B extends A{ - 不推荐
public void test() {
// 调用类A的show方法
show();
}
}
public class B { - 推荐
private A a;
public B(A a) {
this.a = a;
}
public void test() {
// 调用类A的show方法
a.show();
}
}
设计模式
-
基本概念
设计模式就是多年代码经验的总结,主要用于固定的场合中。
-
常用的设计模式
单例设计模式、模板设计模式、工厂方法模式、抽象工厂模式
普通工厂方法模式
1 | public interface Sender { |
1 | public class MailSender implements Sender { |
1 | public class SmsSender implements Sender { |
1 | public class SendFactory { |
1 | public class SendFactoryTest{ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WeiJia_Rao!